MVVM和命令,显示更多的GUI(MVVM and commands that show more

2019-06-23 19:32发布

我喜欢的MVVM想法RelayCommand这年代由视图模型暴露出来。 这很好,优雅,对于可以在没有进一步的用户输入来完成操作。 简单。 可测试。

然而,并非所有操作都UI少。 有些需要确认(“你确定要删除?”)。 其他的则需要更多的信息呢。 打开文件可能涉及从通过全面的导入向导打开文件对话框任何东西。

什么是最好的方式,一个MVVM应用程序中,编写需要用户输入的命令? 是否有与依赖注入某种方式解决这个既定的模式呢? 我应该写在代码隐藏在keyDown处理程序,并将它明确地执行事件? 我应该依傍RoutedUICommand,并把所有的“显示下一个界面”的代码在我看来? 或者是有什么明显的,我绝对不缺?

Answer 1:

我通常使用依赖注入注入某种抽象的东西IShowTheInterface,然后调用上的抽象方法在命令中。 然后,这些方法应该给你的用户所付出的输入您需要确定是否与行动都不断的答案,和。

最近,我用这个作为一个例子博客帖子有一点不同的话题 。



Answer 2:

这种东西(确认对话框,文件打开的对话框等等)通常是应用程序之间共享。 所以,我的选择是不是把它们放到视图模型在所有。

视图模型是应用特有的,它不是无限扩大ViewModelBase一个好主意。 相反,创建可重用的行为来扩展视图。 有quete在一些行为样本的Expression Blend图库

编辑:

行为可以有属性,你可以使用这些属性不仅可以指定行为的特点,也能得到一些反馈:

<Button Content="Open Document">
    <i:Interaction.Behaviors>
        <local:FileOpenBehavior 
            FileNameTarget="{Binding ElementName=tbDocName}"/>
    </i:Interaction.Behaviors>
</Button>

在上面的例子中,tbDocName可以隐藏 - 或者你可以绑定到你的模型视图的属性。



文章来源: MVVM and commands that show more GUI
标签: wpf mvvm