Silverlight DataGrid和Binding列

时间:2010-07-12 10:57:26

标签: silverlight mvvm datagrid

我有一个silverlight数据网格控件,列autogenerate属性设置为false。 我正在使用MVVM并希望绑定列集合。

我得到的数据来自xml。类似于示例代码的东西

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

现在通过将数据网格控件从xmal文件传递到模型视图,我可以获得预期的行为,但是通过这种方式,我在数据网格控件中添加了列。

是否有任何方法,以便我可以使用datagrid控件绑定columns集合,这样就不需要将控件传递给视图模型。

-Rajesh

1 个答案:

答案 0 :(得分:0)

听起来像是MVVM的奇怪实现。您的ViewModel应完全独立于View。如果要在网格上创建动态列,那么为什么不在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);
    }
}

您真的不应该将控件从View传递到ViewModel。 ViewModel应该不了解View的任何控件。