如果我的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,但这似乎是关于这是否是一个好主意;我在问机械师。 (在我看到机制之前,我会保留判断是否是一个好主意。(笑))
答案 0 :(得分:7)
快速而肮脏
<Button x:Name="Save"><TextBlock x:Name="SaveText"></TextBlock></Button>