何时在 mvvm 应用程序中使用值转换器?

发布于 2024-08-20 18:40:30 字数 135 浏览 3 评论 0原文

如果使用 MVVM 设计模式实现 WPF 应用程序,是否存在需要使用值转换器的情况?在我看来,值转换器的作用与视图模型的作用完全相同,即为视图准备数据。

那么,价值转换器有一些好的用途吗?

最好的问候
奥利弗·哈纳皮

If one is implementing a WPF application using the MVVM design pattern, is there any situation in which to use value converters? It seems to me that value converters do exactly the same what the view model does too, that is preparing data for the view.

So, are there some good uses for value converters?

Best Regards
Oliver Hanappi

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

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

发布评论

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

评论(2

浅语花开 2024-08-27 18:40:30

值转换器可以方便地将逻辑状态转换为仅与 UI 相关的视觉状态。例如,BooleanToVisibility 转换器在 MVVM 应用程序中占有一席之地。

但是,我绝不会建议使用转换器使用各种输入参数执行任何复杂的转换或在其实现中调用任何业务逻辑。那是VM的东西。

Value converters are handy to translate logical states into visual states that are only relevant for the UI. A BooleanToVisibility converter, for example, has its place in a MVVM application.

However, I would never recommend to use converters to perform any complex conversion with various input parameters or to call any business logic in their implementation. That's VM stuff.

伏妖词 2024-08-27 18:40:30

这个问题一直困扰着我,因为我为我的项目编写了大量的值转换器,然后才意识到我可以在我的视图模型中完成所有这些工作。我仍在使用它们 - 我只是没有从 XAML 引用它们;我的视图模型明确地调用它们。

即使您不打算从 XAML 调用值转换器,而只是从视图模型中调用它们,将值转换与视图模型解耦实际上很有用。它使值转换逻辑更容易测试、更可重用和可组合。我什至在模型的数据访问层中使用值转换器,没有明显的不良影响。

This question is much on my mind, because I wrote a whole slew of value converters for my project before realizing that I could just be doing all of that in my view model. I'm still using them - I'm just not referencing them from XAML; my view model calls them explicitly.

It's actually useful to decouple value conversion from the view model even if you're not going to call the value converters from XAML, and just call them from the view model instead. It makes value conversion logic easier to test, more reusable, and composable. I even use value converters in the data access layer of my model without apparent ill effect.

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