C# MVVVM应用程序中共享列表的列表模型可行吗?

C# MVVVM应用程序中共享列表的列表模型可行吗?,c#,wpf,mvvm,model,C#,Wpf,Mvvm,Model,我有一个应用程序,其中有很多下拉列表,应该在windows之间保持同步。例如,如果用户添加了一个新部门,则所有打开的带有部门下拉列表的表单也必须包含新部门 我的第一个想法是列表模型,视图模型从中提取列表。所有这些都是可观察集合,因此视图模型订阅列表模型,即订阅列表更改的视图模型,并合并它们 还是我在这里盖一栋意大利面房子 另一个要求(这些不是我的)是,一个用户的列表更改(仅通过数据库与其他用户相同)必须传播给其他用户。我只能想到列表模型发送的广播消息,这是更改的根源。您的解决方案似乎很可靠。我想

我有一个应用程序,其中有很多下拉列表,应该在windows之间保持同步。例如,如果用户添加了一个新部门,则所有打开的带有部门下拉列表的表单也必须包含新部门

我的第一个想法是列表模型,视图模型从中提取列表。所有这些都是可观察集合,因此视图模型订阅列表模型,即订阅列表更改的视图模型,并合并它们

还是我在这里盖一栋意大利面房子


另一个要求(这些不是我的)是,一个用户的列表更改(仅通过数据库与其他用户相同)必须传播给其他用户。我只能想到列表模型发送的广播消息,这是更改的根源。

您的解决方案似乎很可靠。我想要一个
MainWindowViewModel
和您的
ObservableCollection
。创建新窗口时,可以将对
MainWindowViewModel
中的
ObservableCollection
的引用传递给新窗口视图模型的构造函数。这样,添加新部门将自动同步到每个窗口,无论它添加到哪里。

用户如何获取数据?他们是直接连接到db还是通过web服务连接?@ChrisO直接连接到db。假设您使用的是mssql,您可以通过SqlDependency类()使用sql server service broker,然后给它一个查询,当该查询的结果发生更改时(其他人添加了一行),你的应用程序中会有一个事件通知,这样每个人都知道如何重新查询和获取新数据。传递对
MainWindowViewModel
的引用并让新窗口自己选择可能会更容易一些,但感谢你的肯定。老实说,这是一个选项,但我已经尝试了两种方法,我不是一个超级粉丝。我宁愿只公开子视图模型所需的最小信息。我发现这样就不那么令人困惑了。