不在 IMultiValueConverter 上实现 ConvertBack 的正确方法

Correct way to not implement ConvertBack on a IMultiValueConverter

我有一个实现 IMultiValueConverter 的对象。它用于根据特定布尔值和特定枚举值的特定排列来绑定列的可见性,两者都是绑定数据的一部分。 ConvertBack 方法本身显然没有任何意义。

在常规 IValueConverter 上,我可以 return Binding.DoNothing,但那不是 object[],因此无法编译。

我目前抛出一个异常,但感觉不太理想。有没有更好的方法?

实现不支持反向转换的 IValueConverter 或 IMultiValueConverter 的 ConvertBack 方法的正确方法是抛出 NotSupportedException.

返回 Binding.DoNothing 没有任何意义,因为无论如何都不应该调用该方法。但是如果它被意外调用,你会正确地得到一个异常,告诉你哪里出了问题。

public object[] ConvertBack(
    object value, Type[] targetTypes, object parameter, CultureInfo culture)
{
    throw new NotSupportedException();
}

Return null

对于 IMultiValueConverterConvertBack 文档明确指出:

Return null to indicate that the converter cannot perform the conversion or that it does not support conversion in this direction.