如果我的 View 中有一个名为 Save 的按钮,那么我可以向我的 ViewModel 添加一个 Save 属性,Caliburn.Micro 将自动将它绑定(bind)到我的按钮的内容。例如:

public string Save { get { return StringResources.Save; } }

或者我可以向我的 ViewModel 添加一个 Save 方法,当单击按钮时,Caliburn.Micro 将执行该方法。例如:
public void Save() {
    Document.Save();
}

但是如果我想两者都做呢? C# 不允许我声明具有相同名称的方法和属性。我可以使用约定来设置按钮的内容和单击时要执行的操作吗?

(我知道我可以手动绑定(bind)一个或另一个,但如果可行,我宁愿使用约定。)

这是一个常见的需求,因此您会认为它会内置到 Caliburn.Micro 中,但似乎并非如此。我已经看到一些扩展约定以支持这一点的代码(如果没有更好的答案,我会将其发布为答案),但这是一种具有一些奇怪怪癖的解决方法 - 所以我想听听其他人使这项工作更加干净。

注意:我确实看到了 this similar question ,但这似乎是关于这是否是一个好主意;我在问机械。 (在我看到机制之前,我会保留对这是否是一个好主意的判断。(笑))

最佳答案

又快又脏

<Button x:Name="Save"><TextBlock x:Name="SaveText"></TextBlock></Button>

关于caliburn.micro - 如何使用 Caliburn.Micro 约定来设置按钮的文本及其操作?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7876116/

10-12 20:02