C#,WPF,MVVM,为消息对话框/确认对话框创建视图模型?

时间:2015-07-24 01:06:35

标签: c# wpf mvvm dialog confirmation

除了Visual Studio中的简单WPF应用程序项目之外,我没有使用任何其他东西。我已经实现了一个mvvm应用程序。

我想显示用户所做的内容更改列表。我有一个主窗口视图模型,它目前只是构建一个带有更改的字符串。我有可以重用的对象来显示它们的属性(内容)。

目前,我使用MessageBoxResult来显示包含更改的非常长的字符串。这是一个糟糕的设计(我知道),但我无法真正找到一个常规wpf项目的类可以让我实现我想要的答案。

我知道有一个我可以使用的弹出类。在实践中,哪个更好 - 对话框的另一个视图模型,或弹出窗口?

任何人都可以提供两种方法之一的简单示例吗?

提前感谢您的回复。

1 个答案:

答案 0 :(得分:1)

我过去做过的事情是Border控件,TextBlock以及我需要的Button控件。我将TextBlock.Text绑定到名为" MessageBoxMessage"的公共string属性。它调用OnPropertyChanged()。我将每个Command的{​​{1}}绑定到单独的公共Button,它指定在单击按钮时要在视图模型中执行的操作。然后,我将ICommand控件(包含我提到的所有其他控件)的可见性绑定到Visibility属性。

当我想显示一个对话框时,我将MessageBoxMessage设置为我想要显示的消息,确保正确设置命令,然后将Border上的Visibility设置为{{ 1}}。这显示了框(边框),消息和按钮。

您甚至可以在边框下方(在表单的其余部分上)实现一个半透明矩形,同时设置为可见。这将为您提供漂亮的"形式变暗"效果,并阻止正常的表单控件被单击。一般说明 - 为了实现这一点,这些控件需要位于XAML的最底层,因为同一级别的控件中的z-index是从它们在XAML中的位置推断出来的 - 代码中的较低位于顶层形式。

如果您对实施此内容有任何疑问,请与我们联系。如果它听起来像您正在寻找的那样。