根据this accepted answer,实现IMultiValueConverter.ConvertBack的正确方法是引发NotSupportedException。如果是这样,为什么这种方法甚至存在?
也许这不是事实。当然,Microsoft's documentation讨论了实现的各种方式,以表明该实现不支持不涉及引发异常的转换。但是我从未见过实际执行过转换的实现。
有人真正实现过此功能吗?
根据this accepted answer,实现IMultiValueConverter.ConvertBack的正确方法是引发NotSupportedException。如果是这样,为什么这种方法甚至存在?
也许这不是事实。当然,Microsoft's documentation讨论了实现的各种方式,以表明该实现不支持不涉及引发异常的转换。但是我从未见过实际执行过转换的实现。
有人真正实现过此功能吗?
有人真正实现过此功能吗?
是的。
哦,很抱歉。您是否还想要其他东西? :)
您误解了您所引用的问题。问题本身清楚地表明,他们的特定情况对ConvertBack()
方法没有有意义的用途,并且他们正在询问该方法在特定情况下应执行的操作 。发布的答案针对的是特定情况,而不是针对IMultiValueConverter
的每个实现。
过去,我当然已经用实际的逻辑实现了该方法。您可能会发现这样做有用的几个示例是:
Color
值,用于绑定到某种类型的颜色选择器控件。 Convert()
方法会将三个通道组合成单个Color
值,而ConvertBack()
方法会将Color
值分解回三个组成属性。"HH:MM:SS"
的文本字符串,该时间值表示为三个不同的属性(小时,分钟和秒)。 Convert()
方法将这些值与':'
分隔符组合在一起,而ConvertBack()
方法将这些值分开并将其解析为原始整数值。这些只是几个合理的例子。当然,在现实世界中,有很多原因可能会为ConvertBack()
方法提供真正的实现。
当然,在很多情况下,绑定都是单向的,并且没有实现ConvertBack()
方法的有意义的方法。对于这些情况,请像the referenced Q&A suggests一样抛出NotSupportedException()
。