PRISM中的WPF交互请求

PRISM中的WPF交互请求,wpf,prism,messagebox,Wpf,Prism,Messagebox,从表面上看,我有一个非常简单的要求——能够从我的WPF prism应用程序的视图模型中显示messagebox 阅读文档时,当我阅读交互请求时,一切听起来都很好,但是我发现WPF不支持PopupChildWindowAction 人们是如何摆脱这一切的。基本上,我希望在我的shell模块中有一个Messagebox,或者一个基础结构模块,它将订阅事件,并在事件发布时弹出 我遇到的另一个问题是,我希望弹出窗口集中在父窗口(shell)上 只是想知道其他人是怎么做到的。似乎有许多不同的方法,但两者都

从表面上看,我有一个非常简单的要求——能够从我的WPF prism应用程序的视图模型中显示messagebox

阅读文档时,当我阅读交互请求时,一切听起来都很好,但是我发现WPF不支持PopupChildWindowAction

人们是如何摆脱这一切的。基本上,我希望在我的shell模块中有一个Messagebox,或者一个基础结构模块,它将订阅事件,并在事件发布时弹出

我遇到的另一个问题是,我希望弹出窗口集中在父窗口(shell)上


只是想知道其他人是怎么做到的。似乎有许多不同的方法,但两者都不完全符合要求。

使用PRISM中的EventAggregator订阅事件,并具有内存中的presenter,该presenter侦听事件,然后使用事件数据创建视图,并调用视图上的ShowDialog


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

使用Prism 2.2 RI中的RegionPopubeHavior。

来自Karl Shifflet的CodePlex post:

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

安装此Visual Studio扩展

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

查看DialogInteractionRequestView.xaml及其实现

干杯


Karl

由于PopupChildWindowAction仅在Silverlight中存在,因此我通过继承TriggerAction类创建了自己的PopupAction,并简单地重写Invoke()方法体以打开一个PopupWindow,我可以在prism interaction触发器标记内从xaml传递任何用户控件。在ViewModel中,我正在引发交互请求事件,该事件在视图中触发我的PopupAction,并打开弹出窗口,其中显示所需的用户控件。似乎有效。我需要进一步完善这个例子。但这里有一个链接-


虽然这样做可行,但prism的做法似乎是错误的?是否可以使用这种方法创建模式对话框?StockTrader RI将此方法用于非阻塞弹出窗口。