如何基于某些Property从MainViewModel显示子窗口

时间:2016-07-03 13:31:03

标签: c# wpf mvvm prism

嗨我有一种情况,我必须根据某些条件显示一个窗口“连接窗口”。我正在使用PRISM 6.0和WPF,C#。在此输入图像描述 enter image description here

我有一个主窗口,如与MainWindowViewModle和连接窗口相关联的图片中所述。现在我首先点击连接按钮,然后会出现此连接窗口。此窗口及其视图模型“ConnectionWindowViewModel”将执行其余的连接过程。如果连接成功,ConnectWindowViewModel会通过eventAggregaor将其通知给MainWindowViewModel,如

In ConnectionViewModel
    _eventAggregator.GetEvent<UpdateConnectionEvent>().Publish(connection);

In MainWindowViewModel
    eventAggregator.GetEvent<UpdateConnectionEvent>().Subscribe(UpdateConnectionSettings);

按钮的内容将更改为Disconnect,连接窗口将自动消失。

现在,如果我想断开此连接,应该从MainWindowViewModel断开连接,并且不应出现连接窗口。

成功断开连接后,按钮的内容应更改为"Connect"。并再次重复相同的过程。

1 个答案:

答案 0 :(得分:1)

我的方法是使用Prism中内置的Interaction Request个对象。通过这些,您可以打开一个对话框(一种交互),可用于提示最终用途信息,如用户名和密码。 Prism documentation中有一小部分样本,Prism GitHub repo上有一个涉及更多的样本。

使用这些技术和主窗口视图模型上的Connected属性来指示连接的状态,您应该能够非常轻松地完成此操作。我使用交互请求相当多,它们适用于简单(确认更改)和复杂场景(编辑/属性对话框)。