2

我有一个List<Data>地方:

class Data
{
   public string Name { get; set; }
}

我将此列表ItemsSource用作ListView. of my是一个(最初) ,我使用

my绑定属性。ViewListViewGridViewGridViewColumnData.NameDisplayMemberBindingGridViewColumn

在运行时可能会发生我GridViewColumn向 my添加一个新的GridView,所以我需要将一个属性绑定Data到这个新列。

我怎样才能做到这一点?

4

3 回答 3

3

不,您不能在运行时添加“常规”属性 - 坦率地说,您所描述的内容可能想要绑定到 DataTable,并将数据映射到其中。您可以在运行时执行此操作,但它非常复杂。DataTable 已经有了完整的实现。

于 2012-09-24T15:47:27.410 回答
1

编辑:看起来我误解了这个问题。如果您尝试向Data课程添加属性,那么我认为您不走运。如果您已经拥有该属性并且只是想将该现有属性绑定到GridView,那么下面的代码应该会有所帮助。

假设DataContextGridView 已经设置,您可以使用类似于MSDN示例的内容:

GridViewColumn gvc = new GridViewColumn();
gvc.DisplayMemberBinding = new Binding("Surname");
gvc.Header = "Surname";
gvc.Width = 100;
myGridView.Columns.Add(gvc);
于 2012-09-24T15:44:18.823 回答
0

向数据实例添加实际属性的解决方案相当复杂,

但也许这些解决方案之一就足够了

你可以使用动态(更多细节在这里:动态

        dynamic dynamicData = new ExpandoObject();
        dynamicData.Name = "Name";
        dynamicData.Surname = "SomeSurname";

如果你可以重建数据项的集合,你可以使用匿名类型(更多细节在这里匿名类型

        var data = new Data();
        string newPropertyName = "Surname";
        var data2 = new { Name = data.Name, newPropertyName = "SomeString" };

除非您使用 DataTemplates 绑定到具体的数据类型。

于 2012-09-24T15:42:00.857 回答