我有一个WPF应用程序,它在ViewModel中调用MessageBox.Show()方式(以检查用户是否真的要删除).这实际上是有效的,但是违背了MVVM,因为ViewModel不应该明确地确定View上发生了什么.
所以现在我在想如何在我的MVVM应用程序中最好地实现MessageBox.Show()功能,选项:
我可以收到一条短信,上面写着"你确定......?" 以及我的XAML中的边框中的两个按钮是和否全部,并在模板上创建一个触发器,使其基于名为AreYourSureDialogueBoxIsVisible的ViewModelProperty折叠/可见,然后当我需要此对话框时,将AreYourSureDialogueBoxIsVisible指定为"true" "还可以通过我的ViewModel中的DelegateCommand处理这两个按钮.
我也可以尝试用XAML中的触发器来处理这个问题,这样删除按钮实际上只会使一些Border元素出现,其中包含消息和按钮,而Yes按钮实际上是删除了.
对于曾经使用MessageBox.Show()的几行代码而言,这两种解决方案似乎都过于复杂.
您在哪些方面成功实现了MVVM应用程序中的Dialogue Box?
我刚刚开始研究MV-VM的WPF应用程序.到目前为止,除了这个特殊问题,一切都有意义......
我有一个ViewModel我会称之为搜索.此ViewModel绑定到数据网格并列出项目的结果.现在,我有一个命令,需要调出另一个视图,项目的详细信息.
将逻辑显示在搜索视图中显示另一个视图似乎不对,它根本不可测试.
这是我的ViewModel实现,它是不可测试的......
public class SearchViewModel
{
public void SelectItem()
{
// I want to call the DetailsView from here
// this seems wrong, and is untestable
var detailsView = new DetailsView();
detailsView.Show();
}
}
Run Code Online (Sandbox Code Playgroud)
从ViewModel方法显示视图的逻辑在哪里进入这种模式?
这个问题旨在为开发WPF应用程序时提供常见陷阱,"陷阱"或设计问题的解决方案列表.这也可以包括适当的设计模式,只要有解释为什么它最好.响应应根据问题类型的常见程度进行投票.以下是规则: