【问题标题】:WPF interactionRequests in PRISMPRISM 中的 WPF 交互请求
【发布时间】:2011-04-14 17:48:50
【问题描述】:

我有什么,从表面上看,似乎是一个非常简单的要求 - 能够从我的 WPF prism 应用程序的视图模型中显示一个消息框。

当我阅读有关交互请求时,阅读文档一切听起来都不错,但后来我发现 WPF 不支持 PopupChildWindowAction。

人们如何解决这个问题。基本上,我希望在我的 shell 模块/或基础结构模块中有一个消息框,该模块将订阅事件并在该事件发布时弹出。

我遇到的另一个问题是我希望弹出窗口以父窗口(外壳)为中心。

只是想知道其他人是如何处理这个问题的。似乎有许多不同的方法可以走,但似乎都不完全符合要求。

【问题讨论】:

    标签: wpf prism messagebox


    【解决方案1】:

    来自 Karl Shifflet 的 CodePlex 帖子:

    我在这里为我的 Box MVVM 培训编写了交互请求的 WPF 版本:

    http://visualstudiogallery.msdn.microsoft.com/en-us/3ab5f02f-0c54-453c-b437-8e8d57eb9942

    安装此 Visual Studio 扩展。

    使用 MVVM 训练模板创建一个新项目。

    查看 DialogInteractionRequestView.xaml 及其实现。

    干杯,

    卡尔

    【讨论】:

      【解决方案2】:

      使用 Prism 2.2 RI 中的 RegionPopupBehavior。

      【讨论】:

      • 是否可以使用这种方法创建模态对话框? StockTrader RI 将这种方法用于非阻塞弹出窗口。
      【解决方案3】:

      使用 PRISM 中的 EventAggregator 来订阅事件,并有一个内存中的 Presenter 来监听事件,然后使用事件数据创建一个视图并在该视图上调用 ShowDialog。

      然后,对话结果可用于发布“响应”事件,该事件将被路由回启动导致显示对话的事件的进程。

      【讨论】:

      • 虽然这可行,但棱镜的做事方式似乎有问题?
      【解决方案4】:

      由于 PopupChildWindowAction 仅在 Silverlight 中,我通过从 TriggerAction 类继承并简单地覆盖 Invoke() 方法的主体来创建我自己的 PopupAction,以调出一个 PopupWindow,我可以在其中从 prism 交互触发标记中的 xaml 传递任何 UserControl。在 ViewModel 中,我正在引发交互请求事件,该事件会在视图中触发我的 PopupAction 并打开弹出窗口,并在其上显示所需的用户控件。似乎工作。我需要更多地完善这个例子。但这里有一个链接 -

      http://wpfgrid.blogspot.com/2013/01/simple-prism-mvvm-way-to-display-dialog.html#step3

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-29
        • 2015-08-05
        相关资源
        最近更新 更多