[英]Add property at run-time
我有一個List<Data>
其中:
class Data
{
public string Name { get; set; }
}
我將此列表用作ListView
的ItemsSource
。
在View
我的ListView
是GridView
有一個GridViewColumn
(iniltially)和我綁定屬性Data.Name
使用DisplayMemberBinding
我的GridViewColumn
。
在運行時, 可能發生了將新的GridViewColumn
添加到GridView
,因此我需要將Data
的新屬性綁定到此新列。
我怎樣才能做到這一點?
不,您不能在運行時添加“常規”屬性-坦白地說,您所描述的可能要綁定到DataTable並映射數據。您可以在運行時執行此操作,但這非常復雜。 DataTable已經具有完整的實現。
編輯:看來我誤解了這個問題。 如果您想向Data
類添加屬性,那么我認為您很不走運。 如果您已經擁有該屬性,並且只想將該現有屬性綁定到GridView
,那么下面的代碼應該會有所幫助。
假設已經設置了GridView的DataContext
,則可以使用類似於MSDN中的示例的方法:
GridViewColumn gvc = new GridViewColumn();
gvc.DisplayMemberBinding = new Binding("Surname");
gvc.Header = "Surname";
gvc.Width = 100;
myGridView.Columns.Add(gvc);
將實際屬性添加到數據實例的解決方案相當復雜,
但也許這些解決方案之一就足夠了
您可以使用動力學(更多詳細信息在這里: dynamics )
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綁定到數據的約束類型。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.