在运行时遵循 MVVM 模式在 Silverlight DataGrid 控件中动态指定 DataGrid 列的最佳方法是什么?
我想做的是将“DataGrid.Columns”属性绑定到我的 ViewModel 中的一个属性,这样,如果用户添加/删除列,我只需更新 ViewModel 属性,DataGrid 就会改变。问题是,“DataGrid.Columns”属性不能绑定(我不认为)。
因为这个属性不可用,DataGrid 控件本身在 ViewModel 级别也不可用,我目前的方法是跳出 MVVM 模式来实现这个特定的实现,并使用 MVVM Light 的 Messenger 类在 View 的代码隐藏中捕获某些事件,然后直接与 DataGrid 控件对话以实现此功能。我知道这是对这种方法的一般性陈述,没有细节,但有没有更简单的方法......或者可能不是那么容易,但是更好地遵循 MVVM 模式的更好方法?
无法绑定 DataGrid 控件的 Columns 属性,这让我抓狂……这似乎是一件很简单的事情。
仅供参考 - 在建议使用 AutoGenerateColumns = True 之前,为绑定到 DataGrid.ItemsSource 的集合中的每个项目绑定的类没有单独的属性来标识绑定到列的内容......它是一个包含列,以保持它们完全动态,以便特定路径消失。此外,出于同样的原因,处理 AutoGeneratingColumns 并使用 e.Cancel 显示/隐藏列也是不确定的(我认为)。