2012-02-22 88 views
0

我有這樣一類被綁定到DataGrid爲的ItemSource:Silverlight DataGrid綁定 - 如何將子字典項目綁定爲父類屬性?

public class Item 
{ 
    public int Id { get; set; } 
    public string Status { get; set; } 
    public Dictionary<string, string> DynamicProperties { get; set; } 
} 

我要綁定List<Item>到一個Silverlight datagird和顯示列,因爲這

ID |狀態| DynamicProperties [0] | DynamicProperties [1] | ......

我該如何執行此操作?

+0

此外,字典是動態的,直到運行時才知道字典的項目數。 – Xin 2012-02-22 09:58:21

+0

它是silverlgiht 4/mvvm光 – Xin 2012-02-22 10:03:07

+0

發現這解決了我的問題 - http://msmvps.com/blogs/deborahk/archive/2011/01/23/populating-a-datagrid-with-dynamic-columns-in- a-silverlight-application-using-mvvm.aspx – Xin 2012-02-22 10:29:45

回答

2

支持Silverlight 4及更高版本bindings with string indexers。您簡單綁定與路徑如下:

{Binding Path=DynamicProperties['propertyIndex']} 

對於版本更加早期的Silverlight,解決的辦法是要複雜得多,as described on my blog

如果你想直接創建列,只需通過代碼隱藏來完成。上面引用的博文介紹瞭如何動態創建DataGrid。

+0

謝謝。由於字典是動態的,因此字典的項目計數在運行時纔是未知的。我想在後面的代碼綁定,但不知道我應該實現這個事件處理程序。 – Xin 2012-02-22 09:57:37

+0

@Xin更新了我的答案 - 請參閱引用的博客文章,它有一個帶動態列的DataGrid示例。 – ColinE 2012-02-22 10:03:55