2010-07-12 164 views
0

我有一個Silverlight的DataGrid控件和列自動生成屬性設置爲false。 我正在使用MVVM並希望綁定列集合。Silverlight的DataGrid和綁定列

我得到的數據來自xml。同樣的事情也由Xmal位將文件傳遞的DataGrid控件模型視圖,我可以得到預期的行爲,但這樣一來,我在DataGrid控件添加列的示例代碼

http://blogs.msdn.com/b/deepak_verma/archive/2008/07/19/dynamic-creation-binding-of-silverlight-datagrid.aspx

現在。

有沒有什麼辦法,以便我可以綁定與DataGrid控件的列集合,以便不需要傳遞控件來查看模型。

-Rajesh

+0

只是一個個人的觀點,但IMVHO你的viewmodel不應該知道網格列 - 它應該只呈現表格數據或對象的列表,並由視圖決定如何呈現它 - 視圖不應該是從視圖模型獲取任何列信息。 – slugster 2010-07-12 11:26:12

回答

0

聽起來像你在那裏有一個奇怪的MVVM實現。你的ViewModel應該完全獨立於視圖。如果你想在網格上創建動態列,那麼爲什麼不在ViewModel上公開一個相關的屬性集合,並且在View代碼後面的相關方法中遍歷它。

//Used with an Infragistics XamWebGrid control 
private void BuildGrid() { 
    foreach (var dataItem in **ViewModel**.MyDataCollection) 
    { 
     var myCol = new TemplateColumn 
     { 
      HeaderText = dataItem.ItemNm, 
      Key = dataItem.PrimaryKey 
     }; 

     MyGrid.Columns.Add(myCol); 
    } 
} 

你真的不應該將視圖中的控件傳遞給ViewModel。 ViewModel應該不知道視圖上的任何控件。