在 WPF 中使用值转换器,您可以返回类似DependecyProperty.UnsetValue
或Binding.DoNothing
作为特殊值的内容,以表示不理会绑定。MVVMCross 中是否有类似的机制?
更具体地说,我想要做什么,是我有一个视图模型属性,它是一个三态枚举,我需要绑定到 3 个二进制控件。所以我想我可以将每个控件绑定到一个MyEnum
->bool
转换器,该转换器将转换参数设置为转换器的值,并且在该方法中,如果状态等于参数,Convert
它将返回 true,否则返回false。MyEnum
到目前为止,一切都很好。但我希望这个绑定是双向的,所以我需要转换回来。我的转换回来是这样的:
protected override MyEnum ConvertBack(bool value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (parameter is MyEnum)
{
if (value)
{
return (MyEnum)parameter; // this is fine
}
else
{
return ???
}
}
return base.ConvertBack(value, targetType, parameter, culture);
}
基本上,我想要做的是说,如果我的控件状态是true
更新我的视图模型上的绑定属性与参数相同,如果不是,则不理会视图模型属性。
也许这是使用强类型值转换器的问题?