【问题标题】:Databinding in Datagridview C#Datagridview C# 中的数据绑定
【发布时间】:2014-07-14 05:52:41
【问题描述】:

我有一个名为 motor 的模型(类),它由另外两个模型(规格模型、描述模型)作为其属性。在规范或描述模型中,也有一些属性。

我想将电机列表绑定到数据网格视图。不幸的是,datagridview 似乎无法检测到规范和描述模型的属性。可能层太多了?

【问题讨论】:

    标签: c#-4.0 datagridview


    【解决方案1】:

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

    <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 的。在这种情况下,我认为您不能直接绑定到嵌套属性,但正如此处建议的那样:Winforms DataGridView databind to complex type / nested property 您可以在顶层模型上创建一个属性来访问嵌套属性。

    否则,您似乎可以按照此处How to bind a DataGridView column to a second-level property of a data source 的建议创建自己的类型描述符,但如果您只是处理一个简单的模型,这可能有点超出范围。

    【讨论】:

    • 那么,“SpecModel”是我的类名还是电机模型中的属性名?
    • 这是属性名称。 .Name 只是 SpecModel 类的假定属性名称。基本上你总是可以绑定到像这个 Property.Property.Property 等嵌套属性。
    • 不,我试过了,但在 datagridview 中没有看到任何变化。
    • 好的,尝试发布一些示例代码,我会尝试给出更具体的答案。
    • motorListBinding.DataSource = mainController.GetMotorList(); dgvMotorList.AutoGenerateColumns = false; dgvMotorList.DataSource = motorListBinding;tranplier;
    猜你喜欢
    • 2013-02-06
    • 2014-12-30
    • 1970-01-01
    • 2011-06-15
    • 1970-01-01
    • 2015-12-02
    • 1970-01-01
    • 2014-11-29
    • 1970-01-01
    相关资源
    最近更新 更多