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

发布于 2024-12-12 04:10:25 字数 719 浏览 0 评论 0原文

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

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

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

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

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

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

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

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

If I have a button in my View named, say, Save, then I can add a Save property to my ViewModel, and Caliburn.Micro will automatically bind it to my button's Content. For example:

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

Or I can add a Save method to my ViewModel, and Caliburn.Micro will execute that method when the button is clicked. For example:

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

But what if I want to do both? C# doesn't let me declare a method and a property with the same name. Can I use conventions to both set the button's Content and the action to perform when it's clicked?

(I know I can manually bind one or the other, but I'd rather use conventions if it's practical.)

This is a common need, so you'd think it would be built into Caliburn.Micro, but it doesn't seem to be. I've seen some code that extends the conventions to support this (and I'll post it as an answer if nothing better comes along), but it's a workaround with some bizarre quirks -- so I'd like to hear if anyone else has made this work more cleanly.

Note: I did see this similar question, but it seems to be about whether this is a good idea or not; I'm asking about the mechanics. (I'll reserve judgment on whether it's a good idea until I've seen the mechanics. (grin))

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

∞觅青森が 2024-12-19 04:10:26

又快又脏

<Button x:Name="Save"><TextBlock x:Name="SaveText"></TextBlock></Button>

Quick and dirty

<Button x:Name="Save"><TextBlock x:Name="SaveText"></TextBlock></Button>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文