我有一个silverlight数据网格控件,列autogenerate属性设置为false。 我正在使用MVVM并希望绑定列集合。
我得到的数据来自xml。类似于示例代码的东西
现在通过将数据网格控件从xmal文件传递到模型视图,我可以获得预期的行为,但是通过这种方式,我在数据网格控件中添加了列。
是否有任何方法,以便我可以使用datagrid控件绑定columns集合,这样就不需要将控件传递给视图模型。
-Rajesh
答案 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的任何控件。