【问题标题】:How to show A child window from MainViewModel based on some Property如何根据某些属性从 MainViewModel 显示子窗口
【发布时间】:2016-07-03 13:31:03
【问题描述】:

您好,我有一种情况,我必须根据某些情况显示一个窗口“连接窗口”。我正在使用 PRISM 6.0 和 WPF、C#。在此处输入图像描述

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

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

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

按钮的内容会变成Disconnect,连接窗口会自动消失。

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

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

【问题讨论】:

  • 你有什么问题?
  • 您有几小时前的同一篇文章被标记为重复:stackoverflow.com/questions/38163738/…。什么给了?
  • 我的问题在问题部分“如何基于MainWindowViewModel 上的某些属性显示连接窗口?单击Connect 按钮后,我必须显示连接窗口,但是单击同一按钮 (Disconnect) 后,我不想显示 Connect Window,但我会执行断开连接过程。
  • 为什么不在按钮上绑定一个命令来执行您想要的逻辑?如果处于“未连接”状态,则单击时显示连接窗口,如果已建立连接,则将按钮文本更改为“断开”,如果处于“已连接”状态,则单击时关闭连接...
  • 为什么这个问题被否决了?在 SO 中成为质量问题不值得吗?太棒了……太棒了!!!

标签: c# wpf mvvm prism


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-09-23
    • 1970-01-01
    • 2019-07-02
    • 2012-12-20
    • 2011-05-12
    • 2023-01-26
    • 2018-11-16
    • 1970-01-01
    相关资源
    最近更新 更多