使用带有MVVM的MainWindow从某个窗口共享模型

时间:2016-02-10 20:10:13

标签: c# .net mvvm

我的应用程序架构存在问题。我需要创建一些应用程序,打开一些UDP套接字来发送和接收一些数据。

问题是我想创建一些带有连接配置字段的附加窗口(ConfigurationWindow)(如IP,本地端口,远程端口)。这个窗口应该在点击某个按钮时从MainWindow打开,并在数据保存命令时关闭。根据MVVM,这个ConfigurationWindow正在创建ConfigurationViewModel,它正在创建具有IP和端口属性的ConfigurationModel。

一切都很清楚,但是如果我想在MainWindow上点击“连接”按钮建立连接怎么办?在MainWindowViewModel中,我没有从ConfigurationViewModel引用ConfigurationModel。我说更多:在ConfigurationWindow关闭之后,ConfigurationViewModel因此不存在ConfigurationModel对象。

解决此问题的最佳方法是什么,该软件的架构应如何?也许问题源于我的MVVM模式理解。

1 个答案:

答案 0 :(得分:0)

这里最简单的解决方案是让你设置这些值的模型对象在两个视图模型之间共享。

如果您创建了一个具有这些属性的类,则可以从类中公开静态实例,两个视图模型都可以访问相同的数据设置实例并获取属性而无需关心对方正在做什么。

公共类Model {   公共字符串IP {get;设置;}

公共静态模型StaticInstance {get;组} }

然后在任一viewmodel中使用...

访问它

Model.StaticInstance.IP = ...

就像我说的,这是最简单的。您可以通过多种其他方式共享数据 - 文件,注册表,数据库,如果您需要更持久的东西。

或者,您可以将配置视图模型用作数据源 - 在app.xaml中声明并在整个应用程序中绑定。

希望这些指针可以帮助您找到最适合您特定情况的解决方案。