在 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更新我的视图模型上的绑定属性与参数相同,如果不是,则不理会视图模型属性。
也许这是使用强类型值转换器的问题?