C# 4.0 Datagridview C中的数据绑定#

C# 4.0 Datagridview C中的数据绑定#,c#-4.0,datagridview,C# 4.0,Datagridview,我有一个名为motor的模型(类),它包含另外两个模型(spec模型、description模型)作为其属性。在等级库或描述模型中,也有一些属性 我想将马达列表绑定到datagridview。不幸的是,datagridview似乎无法检测规范和描述模型的属性。可能层太多了?您可以关闭“自动生成列”,自己创建列和绑定: <DataGrid ItemsSource="{Binding MotorCollection}" AutoGenerateColumns="False"> <

我有一个名为motor的模型(类),它包含另外两个模型(spec模型、description模型)作为其属性。在等级库或描述模型中,也有一些属性


我想将马达列表绑定到datagridview。不幸的是,datagridview似乎无法检测规范和描述模型的属性。可能层太多了?

您可以关闭“自动生成列”,自己创建列和绑定:

<DataGrid ItemsSource="{Binding MotorCollection}" AutoGenerateColumns="False">
  <DataGrid.Columns>
    <DataGridTextColumn Binding="{Binding Name}"/>
    <DataGridTextColumn Binding="{Binding SpecModel.Name}"/>
    <DataGridTextColumn Binding="{Binding DescriptionModel.Name}"/>
  </DataGrid.Columns>
</DataGrid>

更新:

我不知道这是关于winforms的。在这种情况下,我不认为您可以直接绑定到嵌套属性,但正如这里所建议的:您可以在顶部模型上创建一个属性来访问嵌套属性


否则,您似乎可以按照这里的建议创建自己的typedescriptor,但如果您只是处理一个简单的模型,这可能有点超出范围。

所以,“SpecModel”是我的类名还是motor model中的属性名?它是属性名。而.Name只是SpecModel类上的一个假定属性名。基本上,您可以始终绑定到嵌套属性,如Property.Property.Property等。不,我尝试了,但没有看到datagridview中反映的任何更改。好的,尝试发布一些示例代码,我将尝试给出更具体的答案。motorListBinding.DataSource=mainController.GetMotorList();dgvMotorList.AutoGenerateColumns=false;dgvMotorList.DataSource=motorListBinding;传输钳;