Wpf 为什么IMultiValueConverter.ConvertBack甚至存在?有人实施了吗?
根据,实现IMultiValueConverter.ConvertBack的正确方法是抛出NotSupportedException。如果是这样的话,为什么这种方法会存在呢 也许这不是真的。当然,讨论了实现的各种方式,以表明它不支持不涉及抛出异常的转换。但是我从来没有见过一个真正实现转换的实现 有人真正实现过这个功能吗 有人真正实现过这个功能吗 是的。Wpf 为什么IMultiValueConverter.ConvertBack甚至存在?有人实施了吗?,wpf,data-binding,Wpf,Data Binding,根据,实现IMultiValueConverter.ConvertBack的正确方法是抛出NotSupportedException。如果是这样的话,为什么这种方法会存在呢 也许这不是真的。当然,讨论了实现的各种方式,以表明它不支持不涉及抛出异常的转换。但是我从来没有见过一个真正实现转换的实现 有人真正实现过这个功能吗 有人真正实现过这个功能吗 是的。 哦,对不起。你还想要别的吗?:) 你误解了你提到的问题。问题本身清楚地表明,他们的特定场景对ConvertBack()方法没有任何意义,他们正在
哦,对不起。你还想要别的吗?:) 你误解了你提到的问题。问题本身清楚地表明,他们的特定场景对
ConvertBack()
方法没有任何意义,他们正在询问该方法在该特定情况下应该做什么。发布的答案针对的是具体情况,而不是IMultiValueConverter
的每个实现
我过去确实用实际的逻辑实现了这个方法。您可能会发现这样做很有用的几个示例如下:
color
值,用于绑定到某种类型的颜色选择器控件。Convert()
方法将三个通道组成一个Color
值,而ConvertBack()
方法将Color
值分解回三个组成属性“HH:MM:SS”
。Convert()
方法将把这些值与':'
分隔符组合在一起,而ConvertBack()
方法将把这些值分开,并将它们解析回原始整数值ConvertBack()
方法提供真正的实现
当然,也有同样多的场景中绑定是单向的,并且没有实现
ConvertBack()
方法的有意义的方法。对于这些场景,抛出NotSupportedException()
,就像。ConvertBack
将值发送回ViewModel
可以理解的ViewModel
一样。这意味着你误解了答案。问题是如何在只支持正向转换而不支持反向转换的转换器中实现ConvertBack。如果您的转换器应该支持两个方向,那么您当然会编写一个正确的ConvertBack实现。您甚至可以编写一个只支持ConvertBack的转换器,假设在OneWay-ToSource绑定中使用它。IMultiValueConverter
实际上声明您应该返回null
,以指示无法执行转换或不支持该方向的转换,并建议不要故意从ConvertBack
抛出异常。