簡體   English   中英

在運行時添加屬性

[英]Add property at run-time

我有一個List<Data>其中:

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

我將此列表用作ListViewItemsSource

View我的ListViewGridView有一個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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM