如何在WPF应用程序中使用MVVM Light中的Messaging来显示ChildWindow并从中返回一些值? 我需要的是向用户呈现带有2个日期选择器的模态对话框以及以某种方式返回theese 2值以用作其他视图的参数的消息。 有可能吗?
答案 0 :(得分:0)
通常我只是使用Popup
来做这样的事情。
Popup
的{{1}}通常与Visibility
中的IsPopupVisible
属性绑定,而弹出ViewModel
通常也是DataContext
的一部分视图模型
我不是WPF默认Popup
控件的忠实粉丝,所以如果您有兴趣,我有自己的自定义Popup控件here。
它通常像这样使用:
<local:PopupPanel Content="{Binding PopupContent}"
local:PopupPanel.PopupParent="{Binding ElementName=ParentPanel}"
local:PopupPanel.IsPopupVisible="{Binding IsPopupVisible}" />
我从ViewModel
这样显示:
PopupContent = new SelectDatesViewModel();
IsPopupVisible = true;
触发SelectDatesViewModel.SaveCommand
后,您可以将包含所选日期的消息发送到ViewModels感兴趣的内容:
Messenger.Default.Send(new DatesChangedMessage(this.Date1, this.Date2))
实际的弹出内容既可以在XAML中定义,也可以在隐式DataTemplate
中定义
<DataTemplate DataType="{x:Type local:SelectDatesViewModel}">
<local:SelectDatesView />
</DataTemplate>