为什么IMultiValueConverter.ConvertBack甚至存在?有人实施过吗?

根据this accepted answer,实现IMultiValueConverter.ConvertBack的正确方法是引发NotSupportedException。如果是这样,为什么这种方法甚至存在?

也许这不是事实。当然,Microsoft's documentation讨论了实现的各种方式,以表明该实现不支持不涉及引发异常的转换。但是我从未见过实际执行过转换的实现。

有人真正实现过此功能吗?

y204412 回答:为什么IMultiValueConverter.ConvertBack甚至存在?有人实施过吗?

  

有人真正实现过此功能吗?

是的。


哦,很抱歉。您是否还想要其他东西? :)

您误解了您所引用的问题。问题本身清楚地表明,他们的特定情况对ConvertBack()方法没有有意义的用途,并且他们正在询问该方法在特定情况下应执行的操作 。发布的答案针对的是特定情况,而不是针对IMultiValueConverter的每个实现。

过去,我当然已经用实际的逻辑实现了该方法。您可能会发现这样做有用的几个示例是:

  1. 一种转换器,它将三个颜色分量(红色,绿色和蓝色)合并为一个Color值,用于绑定到某种类型的颜色选择器控件。 Convert()方法会将三个通道组合成单个Color值,而ConvertBack()方法会将Color值分解回三个组成属性。
  2. 一个转换器,该转换器将时间值格式化为表示为"HH:MM:SS"的文本字符串,该时间值表示为三个不同的属性(小时,分钟和秒)。 Convert()方法将这些值与':'分隔符组合在一起,而ConvertBack()方法将这些值分开并将其解析为原始整数值。

这些只是几个合理的例子。当然,在现实世界中,有很多原因可能会为ConvertBack()方法提供真正的实现。

当然,在很多情况下,绑定都是单向的,并且没有实现ConvertBack()方法的有意义的方法。对于这些情况,请像the referenced Q&A suggests一样抛出NotSupportedException()

本文链接:https://www.f2er.com/3107275.html

大家都在问