1

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

我有一个应用程序,datagrids其中包含多个editable objects,例如容器货物包裹

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

所以我的问题是,拥有一个包含所有当前选择的项目的单个类是“不好的做法”还是错误的代码明智viewmodels,并简单地在该类中收听events,然后由viewmodels模型使用来找出关于选定的项目?(使用IoC.get<>以获取“全局”类的实例)

4

1 回答 1

3

在我看来,正如您所说,让模型数据类型类需要了解有关所选项目的任何信息,这是“不好的做法”。我一直认为数据类型类应该只是“数据的持有者”并且具有很少或没有功能......是视图模型的工作。

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

<DataGrid ItemsSource="{Binding DataContext.Shipments, RelativeSource={
    RelativeSource AncestorType={x:Type Views:ParentView}}}" />
于 2013-10-04T13:31:22.860 回答