我们已经讨论了几次关于何时在ViewModel中使用属性与何时使用Converter的讨论。
在以下情况下使用转换器:
在以下情况下使用ViewModel属性:
答案 0 :(得分:3)
一般来说,我试图将IValueConverter
视为“纯粹的观点”。在这种情况下,它应该是可重用的视图代码。 (你也可以使用IMultiValueConverter
来处理你需要“参数”的许多场景,只要它仍然是纯视图相关的......)
另一方面,ViewModel是特定于应用程序的逻辑。如果某些内容依赖于特定于您的域的状态,我宁愿将其直接放在ViewModel中。
答案 1 :(得分:1)
转换器的一个常见用途是像常用的BooleanToVisibilityConvertor一样重用。另一种用途是当您想要执行特定于视图的事物时。对于例如在您的模型中,您可能有一个十进制或整数值,如金额。但在视图中,您希望显示格式化的金额,如$ 10,000,000.00。在这种情况下,您可以使用值转换器。另一种情况是,您希望以不同的格式显示数据,如评级控件,可用于在UI中显示不同的表示形式,同时在数据库中以不同方式存储。
日期是我们可以使用价值转换器的另一个常见地方。想象一下,您希望在待办事项中显示有关任务的相关信息。根据当前数据和与任务相关的日期,您可以显示不同的状态,例如今天,明天,本周,本月等或过去发生的状态。
当模型中的值与需要在视图中显示的值之间不需要转换时,您将使用属性。