【问题标题】:Is it OK to have callback to view inside a WPF command when we are using MVVM?当我们使用 MVVM 时,可以在 WPF 命令中查看回调吗?
【发布时间】:2016-08-26 07:43:03
【问题描述】:

我想知道如果我在命令执行方法中放置一个逻辑来调用通过参数传递给它的回调方法,是否违反了 MVVM 模式?

例如:

public void MyCommandExecute(object arg)
{
if(arg is System.Action)
   {
        (arg as System.Action)(); //this action will do any logic about the view
   }
}

【问题讨论】:

  • 能否为您的问题添加一些代码。但是如果你的回调可以实现 inotifypropertychanged 并更新视图,这听起来不像。
  • @StuartSmith 代码已添加。
  • 您应该拥有一个视图可以绑定到的属性(带有更改通知),而不是将回调作为命令参数传递。命令执行方法只会设置该属性。
  • 我想知道这种回调有什么问题。实施将非常简单。我知道我可以更改属性并在视图中处理 propertychanged 事件。 @克莱门斯
  • @Mohammadamin Khayat 根据 MVVM,您需要通过引发 PropertyChanged 事件来通知视图。您可以为视图模型类实现 INotifyPropertyChanged 接口。我认为您并不完全了解 MVVM 模式。这种类型的回调也是可能的。但是,将视图和数据分开的更好设计取决于您。

标签: wpf mvvm callback command


【解决方案1】:

实际上 MVVM 是把业务逻辑和设计逻辑分开。我们使用视图模型主要用于绑定数据定义属性和所有。直接视图相关代码可以在视图本身中定义。例如:您在视图中定义了一个关闭按钮,并且您希望在用户单击它时关闭窗口。这可以在视图本身中定义,而不是为此使用视图模型。所以这两种方式都是正确的。回调是可能的。您可以在您的视图中直接执行此操作。这就是我想说的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-25
    相关资源
    最近更新 更多