如果我在我的视图中有一个按钮,比如Save,那么我可以添加一个Save属性到我的ViewModel和Caliburn。Micro会自动将它绑定到我的按钮的内容。例如:
public string Save { get { return StringResources.Save; } }
或者我可以添加一个保存方法到我的ViewModel和Caliburn。当点击按钮时,Micro将执行该方法。例如:
public void Save() {
Document.Save();
}
但是如果我两个都想做呢?c#不允许我声明同名的方法和属性。我可以使用约定设置按钮的内容和操作,当它被点击?
(我知道我可以手动绑定其中一个,但如果可行的话,我宁愿使用约定。)
这是一个常见的需求,所以你会认为它应该内置在Caliburn中。微,但看起来不是。我已经看到一些代码扩展了惯例来支持这一点(如果没有更好的,我会把它作为答案贴出来),但这是一个带有一些奇怪怪癖的变通方法——所以我想听听是否有人把这个工作做得更干净。
注意:我确实看到了这个类似的问题,但它似乎是关于这是不是一个好主意;我问的是机制。(在我看到机制之前,我会保留对这是否是一个好主意的判断。(笑))
又快又脏
<Button x:Name="Save"><TextBlock x:Name="SaveText"></TextBlock></Button>