【发布时间】:2011-12-14 03:16:39
【问题描述】:
如果我的视图中有一个名为 Save 的按钮,那么我可以将 Save 属性添加到我的 ViewModel,Caliburn.Micro 会自动将它绑定到我的按钮内容。例如:
public string Save { get { return StringResources.Save; } }
或者我可以向我的 ViewModel 添加一个 Save 方法,当单击按钮时,Caliburn.Micro 将执行该方法。例如:
public void Save() {
Document.Save();
}
但是如果我想两者都做呢? C# 不允许我声明具有相同名称的方法和属性。我可以使用约定both设置按钮的内容和单击时要执行的操作吗?
(我知道我可以手动绑定其中一个,但如果可行的话,我宁愿使用约定。)
这是一种常见的需求,因此您会认为它会内置在 Caliburn.Micro 中,但似乎并非如此。我已经看到了一些扩展约定以支持这一点的代码(如果没有更好的结果,我会将其作为答案发布),但这是一种带有一些奇怪怪癖的解决方法——所以我想听听其他人使这项工作更加干净。
注意:我确实看到了this similar question,但这似乎是关于这是否是一个好主意;我问的是机制。 (在我看到机制之前,我会保留判断这是否是一个好主意。(笑))
【问题讨论】:
-
你玩过制定约定吗?或者我想知道是否有可能实现类似于 CanXyz 的东西。您的约定绑定到该方法,然后查找 XyzContent。
标签: caliburn.micro convention-over-configur