Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf 为什么IMultiValueConverter.ConvertBack甚至存在?有人实施了吗?_Wpf_Data Binding - Fatal编程技术网

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

Wpf 为什么IMultiValueConverter.ConvertBack甚至存在?有人实施了吗?,wpf,data-binding,Wpf,Data Binding,根据,实现IMultiValueConverter.ConvertBack的正确方法是抛出NotSupportedException。如果是这样的话,为什么这种方法会存在呢 也许这不是真的。当然,讨论了实现的各种方式,以表明它不支持不涉及抛出异常的转换。但是我从来没有见过一个真正实现转换的实现 有人真正实现过这个功能吗 有人真正实现过这个功能吗 是的。 哦,对不起。你还想要别的吗?:) 你误解了你提到的问题。问题本身清楚地表明,他们的特定场景对ConvertBack()方法没有任何意义,他们正在

根据,实现IMultiValueConverter.ConvertBack的正确方法是抛出NotSupportedException。如果是这样的话,为什么这种方法会存在呢

也许这不是真的。当然,讨论了实现的各种方式,以表明它不支持不涉及抛出异常的转换。但是我从来没有见过一个真正实现转换的实现

有人真正实现过这个功能吗

有人真正实现过这个功能吗

是的。


哦,对不起。你还想要别的吗?:)

你误解了你提到的问题。问题本身清楚地表明,他们的特定场景对
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
    抛出异常。