这是MVVM不好的做法吗?

轻松编码

假设我想使用事件在视图模型中调用命令。这是不好的做法吗?如果可以,为什么?

例子:

后台代码

void button1_Click(object sender, MouseEventArgs e)
{
    this.ViewModel.OnButton1Click();
}

视图模型

void OnButton1Click()
{
    // Do something
}

提前致谢。

Toadflakz

是的,这是不好的做法,因为您直接引用的ViewModelfrom,View这意味着View之间的依赖关系ViewModel,因此紧密耦合。

该模式特别要求View NOT必须依赖于特定的ViewModel实例或类型。这里的想法是分离的,Views并且ViewModels是多态的Views(可以以多种方式显示相同数据的想法)。为了使您View可重用,它不需要对特定ViewModel类型有具体的依赖性

Commands如Kamel所说,更好的解决方法是使用但是,并非所有事件/交互/控件都必须允许Commands被调用。但是,您可以Commands使用System.Windows.Interactivity.dll随附程序集附加到特定事件Blend SDK

这使您可以创建如下所示的XAML:

 <i:Interaction.Triggers>
      <i:EventTrigger EventName="LostFocus">
           <i:InvokeCommandAction
               Command="{Binding UpdateTextBoxBindingOnEnterCommand}"
               CommandParameter="{Binding RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type TextBox}}}"/>
       </i:EventTrigger>
  </i:Interaction.Triggers>

..允许与事件处理程序使用相同的功能来调用Command,但以对MVVM友好的方式分离。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

这是多态吗,这是不好的做法吗?

Java抽象方法:这是不好的做法吗?

将特征用于服务层:这是不好的做法吗?

这是不好的做法吗?分配一个返回变量

这在javascript中是什么?这是不好的做法吗?

C# 属性,这是一种不好的做法吗?

MVVM做法不好?(CommandParameter)

这是正确的做法吗?

在实例方法中写入静态变量,这是一个不好的做法吗?

使用Maven settings.xml构建Docker映像-这是一种不好的做法吗?

PHP数组中的嵌套运算符。这是不好的做法吗?

没有$ scope。$ watch的服务和控制器之间的双向绑定。这是不好的做法吗?

我可以将 props 作为函数参数传递,或者这是一种不好的做法吗?

在Firebase中使用字段代替文档,这是不好的做法吗?

循环依赖是不好的做法吗?

“抛出异常”是不好的做法吗?

NULL参数是不好的做法吗?

Optional<List> 是不好的做法吗?

Java Reflection是不好的做法吗?

多态关系是不好的做法吗?

在Spring Boot中处理异常的方法。引发异常捕获并引发相同的异常,这是一种不好的做法吗?

将静态属性包含在存储库中可以吗,或者这是一种不好的做法?

当我在没有空闲的情况下用新指针分配指针时,这是不好的做法吗?

嵌套CSS网格是不好的做法吗?

以反应形式使用[(ngModel)]是不好的做法吗?

尝试捕捉演员总是不好的做法吗?

在doInBackground()中访问视图是不好的做法吗?

在Java中使用`this`是不好的做法吗?

这个春季教程有不好的做法吗?