WPF - 数据绑定时是否存在某种隐式转换?

5

我刚刚注意到,在我的项目中,有些地方我忘记使用Int/DoubleToStringValueConverter与我的双向绑定,但它们仍然能够工作。

那么这里是否存在某种隐式转换呢?我确实知道string->color、color->string的转换,我有时候也用过,但是没有用过number->string和string->number。所以,您能否推荐一些文档,让我了解何时应该使用转换器,何时不应该使用?


1
我认为还有另一个(数据绑定之外的)进程会为您完成此操作。它是由所谓的“类型转换器”执行的,例如对于Color我们有ColorConverter,对于int,我们有Int32Converter,... 此过程在绑定完成后进行。这意味着您可以将Color属性绑定到表示颜色名称的某个字符串,绑定完成后,颜色名称将使用ColorConverter转换为Color - King King
1个回答

2
在 MS Docs 的“数据绑定概述”文章中的“数据绑定”部分中,引用了“数据转换”一节。
默认转换可能可用,因为绑定的类型中存在类型转换器。这种行为取决于目标中可用的类型转换器。如果不确定,可以创建自己的转换器。 以下是一些典型情况,其中实现数据转换器是有意义的: • 根据文化差异,应以不同方式显示数据。例如,您可能希望根据特定文化惯例实现货币转换器或日历日期/时间转换器。 • 使用的数据并不一定旨在更改属性的文本值,而是旨在更改某个其他值,例如图像的来源、显示文本的颜色或样式等。在这种情况下,可以通过将一个似乎不合适的属性(如将文本字段绑定到表格单元格的背景属性)进行转换来使用转换器。 • 多个控件或控件的多个属性绑定到相同的数据。在这种情况下,主要绑定可能只显示文本,而其他绑定处理特定的显示问题,但仍然使用相同的绑定作为源信息。 • 目标属性具有绑定集合,称为MultiBinding。对于MultiBinding,您可以使用自定义IMultiValueConverter从绑定的值生成最终值。例如,颜色可以从红色、蓝色和绿色值计算,这些值可以来自同一或不同的绑定源对象。请参阅MultiBinding以获取示例和信息。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接