mvvm - Caliburn Micro 中的命令类

标签 mvvm caliburn.micro

在我第一个尝试 Caliburn.Micro 的项目中,我喜欢很多东西 :-)

我想念(或尚未发现)的一件事是如何分离 View 模型和命令。
CM不支持ICommand,它的处理方式是superior .我确信这是真的,所以我希望朝着正确的方向小幅插入以实现这一目标,或者可能发现更好的方法。

据我了解,您必须将“Execute”方法和“CanExecute”属性直接放在 View 模型中,命名为与 View 中的控件匹配,以使魔法发挥作用。

我想将“Execute”和“CanExecute”放在作为 View 模型属性的不同对象中,然后 CM 会自动绑定(bind)到该对象,通常使用控件名称和属性名称。

Repost从 Caliburn Micro 的论坛上,我没有得到任何答案,所以我在这里试试运气。

最佳答案

您应该尽量避免使 Law of Demeter 无效。 .因此,在您的 View 模型上,您可以有一个执行方法和一个 CanExecute属性(通常是计算出来的),并且这些可以在适当的地方调用包含模型,例如:

public void Save
{
   // .. save logic
}

public bool CanSave
{
    get
    {
        return this.model.CanSave ... and other logic etc.
    }
}

您必须记住在可以保存状态更改时通知计算属性的更改,例如:
public void CodeThatGetsRunWhenAPropertyOfTheModelChanges()
{
    this.NotifyOfPropertyChanged(() => this.CanSave);
} 

如果你有例如一个 Button在您看来,x:Name="Save" ,然后 Caliburn.Micro 将自动调用您的 Save单击按钮时 View 模型上的动词,当 CanSave 时将自动启用和禁用按钮属性值变化。

关于mvvm - Caliburn Micro 中的命令类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18102286/

相关文章:

android - Android MVVM : Should the view notify the view-model for every user interaction even trivial ones (only have UI consequence/no data)

c# - 与 Caliburn Micro 问题的深度属性绑定(bind)

c# - 如何拥有适用于控制台和 wpf 的 calibburn 应用程序?

mvvm - Agfx 和 caliburn.micro 示例

c# - InvalidOperationException,调用线程应该是STA,因为

c# - WPF 应用程序中的后台线程和 UI 线程

mvvm - 带有 Caliburn Micro 的 AvalonDock 2

wpf - Caliburn:如何将托管控件绑定(bind)到 ViewModel 属性

c# - 使用 Caliburn Micro 和 Silverlight 从文件服务器加载图像

c# - wpf mvvm 嵌套用户控件数据上下文