0

如何在 am WPF 应用程序中使用来自 MVVM Light 的消息传递来显示 ChildWindow 并从中返回一些值?我需要向用户呈现一个带有 2 个日期选择器的模态对话框和消息以某种方式返回这些 2 个值,以用作其他视图的参数。可能吗 ?

4

1 回答 1

0

通常我只是用 aPopup来做这样的事情。

Popup通常与 中的属性Visibility绑定,并且 Popup通常也是 ViewModel 的一部分IsPopupVisibleViewModelDataContext

我不是 WPF 默认控件的忠实拥护者,所以如果您有兴趣,我在这里Popup有我自己的自定义 Popup 控件。

它通常这样使用:

<local:PopupPanel Content="{Binding PopupContent}"
    local:PopupPanel.PopupParent="{Binding ElementName=ParentPanel}"
    local:PopupPanel.IsPopupVisible="{Binding IsPopupVisible}" />

我是ViewModel这样展示的:

PopupContent = new SelectDatesViewModel();
IsPopupVisible = true;

一旦SelectDatesViewModel.SaveCommand触发,您可以向任何感兴趣的 ViewModel 发送一条包含所选日期的消息:

Messenger.Default.Send(new DatesChangedMessage(this.Date1, this.Date2))

实际的弹出内容可以在 XAML 中定义,也可以使用隐式DataTemplate

<DataTemplate DataType="{x:Type local:SelectDatesViewModel}">
    <local:SelectDatesView />
</DataTemplate>
于 2012-06-05T13:29:22.530 回答