在我的Viewmodel中,根据给定的数据类型,我生成列(使用反射获取数据类型的所有属性并使用它们创建适当的datagrid列)并将其添加到Columns集合。现在我想将这个Collection绑定到我的datagrid的columns属性,如下所示:
< DataGrid Columns =“{Binding VMColumnCollection}”/>
请告诉我如何在不破坏MVVM的情况下实现这一目标?
答案 0 :(得分:0)
您不能这样做,但有一种解决方法,请检查此解决方案:Answer in Stackoverflow
答案 1 :(得分:0)
我得到了解决方案,问题不在于附加属性。实际上我在TabControl.But中使用datagrid时,当我从第一个标签页切换到第二个标签然后再次回到第一个标签时,一个例外是从附加属性生成的'列xyz已经存在.....'但是Datagrid。 Columns.Count是0.这很奇怪,即使列数为0,我也无法插入一列(虽然我无法找到为什么会发生这种情况)。然后调试时发现每当我切换回我以前选项卡,视图的构造函数被调用。切换回选项卡不应该创建新的View实例,我在互联网上搜索并找到下面的链接
How to preserve control state within tab items in a TabControl
http://eric.burke.name/dotnetmania/2009/04/26/22.09.28
然后我创建了一个自定义Tabcontrol,如第二个链接所示。现在它正在发挥作用。