【问题标题】:C#, WPF, MVVM, Creating a viewmodel for message dialogs/confirmation dialogs?C#、WPF、MVVM、为消息对话框/确认对话框创建视图模型?
【发布时间】:2015-07-24 01:06:34
【问题描述】:

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

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

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

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

谁能提供两种方法之一的简单示例?

提前感谢您的回复。

【问题讨论】:

    标签: c# wpf mvvm dialog confirmation


    【解决方案1】:

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

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

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

    如果您对实现此功能有任何疑问,请告诉我,如果它听起来像您正在寻找的东西。

    【讨论】:

    • 感谢您的回复。我不知道控件在 xaml 中的位置如何。我希望提供一种方法来重用我在主窗口中显示的一些对象。我想我会试一试。
    猜你喜欢
    • 2021-08-01
    • 1970-01-01
    • 2017-10-19
    • 1970-01-01
    • 2010-12-12
    • 2012-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多