如何在Viewmodel中使用属性公开DataGrids Columns属性?

时间:2011-04-27 05:43:58

标签: wpf mvvm datagrid viewmodel

在我的Viewmodel中,根据给定的数据类型,我生成列(使用反射获取数据类型的所有属性并使用它们创建适当的datagrid列)并将其添加到Columns集合。现在我想将这个Collection绑定到我的datagrid的columns属性,如下所示:

< DataGrid Columns =“{Binding VMColumnCollection}”/>

请告诉我如何在不破坏MVVM的情况下实现这一目标?

2 个答案:

答案 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,如第二个链接所示。现在它正在发挥作用。