我有List<Data>
其中:
class Data
{
public string Name { get; set; }
}
我将此列表用作ItemsSource
的{{1}}。
我ListView
的{{1}}为View
,其中ListView
为GridView
(有害),我使用{{1}绑定属性GridViewColumn
我的Data.Name
。
在运行时可能,我向DisplayMemberBinding
添加了新的GridViewColumn
,因此我需要绑定新属性GridViewColumn
这个新专栏。
我该怎么做?
答案 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类型的数据。