WPF全局变量?

时间:2013-10-04 12:48:04

标签: c# wpf mvvm global

这个问题很难说,所以请问我的解释是否缺乏。

我的应用包含多个datagrids,其中包含editable objects,例如容器货件

现在,每个对象(发货容器等)通常都需要了解另一个{{1 (例如,需要知道在 containerviewmodel 中选择了容器)通常我会在{{1}时触发一个事件}更改并监听datagrid上需要此信息的事件,但最近已进行了更改,需要selectedItem了解选择。

所以我的问题是,拥有一个包含所有viewmodels所有当前所选项目的单一类是不是“不好的做法”还是不好的代码,只需听取models中的viewmodels单个类,然后events和模型使用它来查找所选项目? (使用viewmodels来获取“全局”类的实例)

1 个答案:

答案 0 :(得分:3)

在我看来,我会说,正如你所说的那样,“糟糕的做法”是让模型数据类型类需要知道所选项目的任何内容。我一直认为数据类型类应该只是“数据持有者”并且几乎​​没有功能...... 是视图模型的工作。

在您的情况下我可能会做的是拥有一个父视图模型,该模型包含所有集合属性,以绑定到每个集合中的选定项目。这样,您就可以在一个位置处理所有事情。子视图也可以直接绑定到父视图模型,如果这有帮助:

<DataGrid ItemsSource="{Binding DataContext.Shipments, RelativeSource={
    RelativeSource AncestorType={x:Type Views:ParentView}}}" />