使用MVVM处理WPF中的对话框

使用MVVM处理WPF中的对话框

在WPF的MVVM模式中,处理对话框是更复杂的操作之一。由于您的视图模型对视图一无所知,因此对话通信很有趣。我可以公开一个ICommand,当视图调用它时,会出现一个对话框。

有没有人知道处理对话结果的好方法?我说的是关于Windows对话框,比如MessageBox。

我们这样做的方法之一是在viewmodel上有一个事件,当需要对话框时,视图会订阅该事件。

public event EventHandler<MyDeleteArgs> RequiresDeleteDialog;

这没关系,但这意味着视图需要代码,这是我想远离的东西。


慕码人2483693
浏览 1059回答 3
3回答

撒科打诨

我建议放弃1990年代的模态对话框,而是将控件实现为覆盖(画布+绝对定位),其中可视性与VM中的布尔值相关联。更接近ajax类型控件。这非常有用:<BooleanToVisibilityConverter&nbsp;x:Key="booltoVis"&nbsp;/>如:<my:ErrorControl&nbsp;Visibility="{Binding&nbsp;Path=ThereWasAnError,&nbsp;Mode=TwoWay,&nbsp;Converter={StaticResource&nbsp;booltoVis},&nbsp;UpdateSourceTrigger=PropertyChanged}"/>这是我如何实现一个用户控件。单击“x”会关闭usercontrol代码后面的一行代码中的控件。(因为我在一个dll中的.exe和ViewModels中有我的视图,所以我对操作UI的代码感到不舒服。)
打开App,查看更多内容
随时随地看视频慕课网APP