【问题标题】:Caliburn micro action on model-object模型对象上的 Caliburn 微动作
【发布时间】:2019-02-13 09:44:24
【问题描述】:

使用caliburn micro,您可以通过以下方式执行方法:

<Buttton x:Name="ClickMe" />

并且在ViewModel中有这样的方法:

public void ClickMe() 
{
    //Method will be execute upon button click
}

是否可以将此绑定到ViewModel 中属性内的方法?像这样?:

<Buttton x:Name="Model.ClickMe" />

【问题讨论】:

  • 不是事件处理程序,它是action 的名称。动作和元素由触发器绑定。概念与数据绑定相同。无论您使用什么输入控件,触发该控件时都可以调用相同的命令。您还可以将多个视图控件绑定到同一命令
  • @PanagiotisKanavos 感谢您的贡献。不太确定你在这里想说什么,但在我看来这与 caliburn.micro 框架无关?如果我错了,请纠正我。
  • 恰恰相反。该链接指向 Caliburn.Micro 文档,该文档解释了命名约定用于创建调用动作以响应事件的触发器、它们如何冒泡以及如何使用 Message.Attach 语法。您正在寻找的是绑定到另一个 ViewModel 对象的语法。
  • Caliburn.Micro 和 WPF 通常允许 composition。您可以拥有一个带有嵌套视图的视图,它可以很容易地绑定到一个 ViewModel 和嵌套的 ViewModel。子视图中的元素应在其自己的视图模型中触发操作
  • 想象一下,例如,您有一个主/详细视图。那是一个根视图,带有一个主列表和一个详细视图。这些可以(并且应该)映射到包含 Master ViewModel 和 Detail ViewModel 的 ViewModel。在 Caliburn.Micro 中这样做几乎是微不足道的 - 只需为根视图中的每个子视图使用 ContentControl,Caliburn.Micro 就会根据它们的名称为 Master 和 Detail VM 选择正确的视图。一旦你这样做了,detail 中的 UI 元素将调用详细 VM 本身中的操作。

标签: c# wpf caliburn.micro


【解决方案1】:

写下以下内容时的第一件事:

<Button x:Name="Model.ClickMe" />

谁会给你这样的错误:

“Model.ClickMe”不是属性“Name”的有效值。

现在如果你想在另一个UserControl(你的Model)中调用另一个方法,你需要绑定到那个模型。

   <Button x:Name="ClickMe" cal:Bind.Model="{Binding Model}"></Button>

【讨论】:

  • 正是我想要的!非常感谢!
猜你喜欢
  • 2011-10-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多