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

Joe*_*ite 3 convention-over-configur caliburn.micro

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

public string Save { get { return StringResources.Save; } }
Run Code Online (Sandbox Code Playgroud)

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

public void Save() {
    Document.Save();
}
Run Code Online (Sandbox Code Playgroud)

但如果我想同时做两件事呢?C#不允许我声明一个方法和一个具有相同名称的属性.我可以用约定双方设置按钮的内容和动作单击时执行?

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

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

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

And*_*ers 7

又脏又脏

<Button x:Name="Save"><TextBlock x:Name="SaveText"></TextBlock></Button>
Run Code Online (Sandbox Code Playgroud)