如何使用Caliburn.Micro约定来设置按钮的文本及其操作?

时间:2011-10-24 13:10:09

标签: caliburn.micro convention-over-configur

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

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

或者我可以将Save方法添加到我的ViewModel,Caliburn.Micro将在单击按钮时执行该方法。例如:

public void Save() {
    Document.Save();
}

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

(我知道我可以手动绑定一个或另一个,但如果它是实用的话我宁愿使用约定。)

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

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

1 个答案:

答案 0 :(得分:7)

快速而肮脏

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