Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 让datagrid使用反射创建具有未知类型的列_C#_Wpf_Xaml_Mvvm - Fatal编程技术网

C# 让datagrid使用反射创建具有未知类型的列

C# 让datagrid使用反射创建具有未知类型的列,c#,wpf,xaml,mvvm,C#,Wpf,Xaml,Mvvm,我有两个模型 Case1ViewModel : ViewModelBase, ITestInterface Case2ViewModel : ViewModelBase, ITestInterface 它们都继承自ITestInterface,该接口为空 然后我有一个 ObservableCollection<ITestInterface> XAML _嗯 _取消 本例中的结果是,我获得了对应字符串,但不会显示来自批发商DialogTradeItemViewModel的所有其

我有两个模型

Case1ViewModel : ViewModelBase, ITestInterface
Case2ViewModel : ViewModelBase, ITestInterface
它们都继承自ITestInterface,该接口为空

然后我有一个

ObservableCollection<ITestInterface>
XAML


_嗯
_取消
本例中的结果是,我获得了对应字符串,但不会显示来自批发商DialogTradeItemViewModel的所有其他属性,如果我从界面中删除对应项,则不会显示任何内容


另一个示例(右键单击以显示全尺寸)

答案以替换结束

public ObservableCollection<ITestInterface> Transactions
公共可观测收集事务

公共可观测收集事务

显然,这迫使编译器使用反射来找出要显示的内容,如果我使用该接口,它也会将该

发布到您的XAML中。我已经删除了我的答案,因为它没有回答您的问题。我看看能不能找到更有用的。。。
    public string TradeDirection
    {
        get { return _tradeDirection; }
        set
        {
            _tradeDirection = value; 
            OnPropertyChanged(() => TradeDirection);
        }
    }

    public string Book
    {
        get { return _book; }
        set
        {
            _book = value; 
            OnPropertyChanged(() => Book);
        }
    }

    public string Counterpart
    {
        get { return _counterpart; }
        set
        {
            _counterpart = value; 
            OnPropertyChanged(() => Counterpart);
        }
    }

    public string Product
    {
        get { return _product; }
        set { _product = value; OnPropertyChanged(() => Product); }
    }

    public string Delivery
    {
        get { return _delivery; }
        set { _delivery = value; OnPropertyChanged(()=> Delivery);}
    }

    public string Period
    {
        get { return _period; }
        set { _period = value; OnPropertyChanged(() => Period);}
    }

    public int Volume
    {
        get { return _volume; }
        set { _volume = value; OnPropertyChanged(() => Volume);}
    }

    public int Price
    {
        get { return _price; }
        set { _price = value; OnPropertyChanged(() => Price);}
    }
}

public interface ITestInterface
{
    string Counterpart { get; }
}
   <Grid>
    <Grid.RowDefinitions>
        <RowDefinition />
        <RowDefinition />
    </Grid.RowDefinitions>
    <DataGrid
        Grid.Row="0"
        Width="600"
        SelectionMode="Extended"
        SelectionUnit="FullRow"
        CanUserDeleteRows="False"
        CanUserResizeRows="False"
        IsReadOnly="True"
        AutoGenerateColumns="True"
        AutoGeneratingColumn="DataGrid_OnAutoGeneratingColumn"
        ItemsSource="{Binding Transactions, Mode=OneWay}">

    </DataGrid>
    <Grid 
        Grid.Row="1">
        <Grid.ColumnDefinitions>
            <ColumnDefinition />
            <ColumnDefinition />
        </Grid.ColumnDefinitions>
        <Button 
            Grid.Column="0"
            Margin="5,10,5,0"
            cal:Click.Command="{Binding SaveCommand}"
            Height="25">
            <AccessText>_OK</AccessText>
        </Button>
        <Button 
            Grid.Column="1"
            Margin="5,10,5,0"
            cal:Click.Command="{Binding CancelCommand}"
            Height="25">
            <AccessText>_Cancel</AccessText>
        </Button>
    </Grid>
</Grid>
public ObservableCollection<ITestInterface> Transactions
public ObservableCollection<object> Transactions