gpt4 book ai didi

wpf - 您是如何在 MVVM 中成功实现 MessageBox.Show() 功能的?

转载 作者:行者123 更新时间:2023-12-03 07:12:03 30 4
gpt4 key购买 nike

我有一个 WPF 应用程序它在 ViewModel 中调用 MessageBox.Show()(以检查用户是否确实想要删除)。 这实际上有效,但是违背了 MVVM 的原则,因为 ViewModel 不应该明确确定 View 上发生的情况。

所以现在我在想如何在我的 MVVM 应用程序中最好地实现 MessageBox.Show() 功能,选项:

  1. 我可以收到一 strip 有“您确定...?”的消息吗?以及两个按钮是和否都在我的 XAML 中的边框中,并在模板上创建一个触发器,以便它基于名为 AreYourSureDialogueBoxIsVisible 的 ViewModelProperty 折叠/可见,然后当我需要此对话时框中,将 AreYourSureDialogueBoxIsVisible 指定为“true”,并通过 DelegateCommand 返回到我的 ViewModel 中处理这两个按钮。

  2. 我还可以尝试使用 XAML 中的触发器来处理此问题,以便“删除”按钮实际上只是使某些 Border 元素与其中的消息和按钮一起出现,而"is"按钮则执行实际删除操作。

这两种解决方案似乎都太复杂了,对于以前使用 MessageBox.Show() 的几行代码来说。

您通过哪些方式在 MVVM 应用程序中成功实现了对话框?

最佳答案

救援服务。使用Onyx (免责声明,我是作者)这很简单:

public void Foo()
{
IDisplayMessage dm = this.View.GetService<IDisplayMessage>();
dm.Show("Hello, world!");
}

在正在运行的应用程序中,这将间接调用 MessageBox.Show("Hello, world!")。测试时,可以模拟 IDisplayMessage 服务并将其提供给 ViewModel 来执行您在测试期间想要完成的任务。

关于wpf - 您是如何在 MVVM 中成功实现 MessageBox.Show() 功能的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1098023/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com