我有一个带有DataGridComboBoxColumn的DataGrid。每个ComboBox都应具有相同的下拉菜单:在ComboBox中输入的新值(ComboBox是可编辑的,并且接受Enter键以在列表中引入新值(如果尚不存在)),一些预定义普通值的列表值和特殊的变灰值。用户应该能够在数据网格中添加新行,就像在当前版本中一样。
ComboBox中的项目取自BaseVM,BaseVM和BaseM在某种程度上是同步的,更确切地说是BaseVM.ChildVMCollection和BaseM.ChildMCollection。我试图找到一种更简单的方法来同步两个集合,但是我没有成功。 ChildVM继承自ChildM,BaseVM继承自BaseM。
如果可能的话,我想尊重MVVM模式(我认为它可以长期保持灵活性)。
我已经考虑过使用视图模型工厂,但是在此示例中,为简单起见,省略了它。我只使用对构造函数的调用并进行强制转换。
我想我必须在DataGridComboBoxColumn内的每个组合框中为每个项目都拥有一个ViewModel,为每个视图都拥有一个ViewModel(ComboBoxItem),并且我想知道如何正确实现这一点。在休息时,我想我可以实现ViewModel Locator来获取ViewModel的模型(尽管这只是上面发布的代码中的强制转换)。
问题可能会继续这样:
在DataGrid中,分别设置每个ComboBox的ItemsSource的最正确方法是什么,以便它们中的每个ComboBoxItem都有一个特定的ViewModel?
我是初学者。我已经在阅读列表中放入了一些维基百科页面:
我目前正在经历this tutorial。我习惯于WinForms在代码隐藏中执行大多数操作的方式。
我正在尝试以更正确的MVVM方式在this GitHub repo中重建代码。这是this question中更新的延续。
该代码有效,但不是很灵活。