WPF 全局变量

本文关键字:全局变量 WPF | 更新日期: 2023-09-27 18:33:50

这个问题很难用词,所以请问我是否缺少解释。

我有一个应用程序,它有几个包含editable objects datagrids,例如集装箱货物包裹

现在,这些对象(装运集装箱包裹等(中的每一个通常需要了解另一个datagrid中的选定项目(例如,包裹需要知道在containerviewmodel中选择的容器(通常我会在selectedItem更改时触发一个事件,并侦听viewmodels上需要此信息的事件, 但是,最近进行了更改,需要models了解选择。

所以我的问题是,拥有一个包含所有viewmodels中当前选定项的单个类,并简单地侦听该单个类中的events,然后由viewmodels和模型用来查找所选项,这是否是"不良做法"或糟糕的代码?(使用 IoC.get<> 获取"全局"类的实例(

WPF 全局变量

在我看来,我会说,正如你所说,让模型数据类型类需要知道有关选定项目的任何信息是"不好的做法"。我一直认为数据类型类应该只是"数据的持有者",并且几乎没有功能......这是视图模型的工作。

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

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