3

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

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

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

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

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

(我知道我可以手动绑定其中一个,但如果可行的话,我宁愿使用约定。)

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

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

4

1 回答 1

7

Quick and dirty

<Button x:Name="Save"><TextBlock x:Name="SaveText"></TextBlock></Button>
于 2012-04-18T08:09:52.860 回答