这个问题很难说,所以请问我的解释是否缺乏。
我的应用包含多个datagrids
,其中包含editable objects
,例如容器,货件和包
现在,每个对象(发货,容器,包等)通常都需要了解另一个{{1 (例如,包需要知道在 containerviewmodel 中选择了容器)通常我会在{{1}时触发一个事件}更改并监听datagrid
上需要此信息的事件,但最近已进行了更改,需要selectedItem
了解选择。
所以我的问题是,拥有一个包含所有viewmodels
所有当前所选项目的单一类是不是“不好的做法”还是不好的代码,只需听取models
中的viewmodels
单个类,然后events
和模型使用它来查找所选项目? (使用viewmodels
来获取“全局”类的实例)
答案 0 :(得分:3)
在我看来,我会说,正如你所说的那样,“糟糕的做法”是让模型数据类型类需要知道所选项目的任何内容。我一直认为数据类型类应该只是“数据持有者”并且几乎没有功能...... 是视图模型的工作。
在您的情况下我可能会做的是拥有一个父视图模型,该模型包含所有集合和属性,以绑定到每个集合中的选定项目。这样,您就可以在一个位置处理所有事情。子视图也可以直接绑定到父视图模型,如果这有帮助:
<DataGrid ItemsSource="{Binding DataContext.Shipments, RelativeSource={
RelativeSource AncestorType={x:Type Views:ParentView}}}" />