在运行时添加属性

时间:2012-09-24 15:04:38

标签: c# wpf listview gridview binding

我有List<Data>其中:

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

我将此列表用作ItemsSource的{​​{1}}。

ListView的{​​{1}}为View,其中ListViewGridView(有害),我使用{{1}绑定属性GridViewColumn我的Data.Name

在运行时可能,我向DisplayMemberBinding添加了新的GridViewColumn,因此我需要绑定属性GridViewColumn这个新专栏。

我该怎么做?

3 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

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

假设已经设置了GridView的DataContext,您可以使用与MSDN上的示例类似的内容:

GridViewColumn gvc = new GridViewColumn();
gvc.DisplayMemberBinding = new Binding("Surname");
gvc.Header = "Surname";
gvc.Width = 100;
myGridView.Columns.Add(gvc);

答案 2 :(得分:0)

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

但也许其中一种解决方案就足够了

您可以使用动态(此处有更多详细信息:dynamics

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

如果您可以重建数据项的集合,则可以使用匿名类型(更多详细信息,请anonymous types

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

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