[英]WPF - Dynamic value in ConverterParameter
出现了UI中的复选框需要绑定到数字参数的情况-实际上,某些值使复选框为“ true”,否则为“ false”。
最简单的方法似乎是使用转换器:
[ValueConversion(typeof(int), typeof(bool?))]
public class TypeToBoolConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (targetType != typeof(bool?))
throw new InvalidOperationException("The target must be a bool");
if( (value < 3)
{
return true;
}
return false;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplmentedExpection();
}
}
然后在XAML中:
<CheckBox IsChecked="{Binding Path=Type.TypeID, Converter={StaticResource TypeConverter}}" />
在使用Convert时,它的工作方式像一个超级按钮,但是在使用ConvertBack时,它会完全失败,因为它需要先知道数值(取决于其他UI元素),然后才能知道要返回的数字-有效地,它需要访问绑定的对象。
我以为我可以使用ConverterParameter做到这一点,但是从外观上看,您不能将值绑定到此属性。
有没有办法摆脱这种混乱?
编辑:我已经解决了这个问题,通过弄乱原始绑定,并摆脱了它,因为取消选中我想做的就是删除该项目。 但是我将保留此位置,因为这似乎是一个有效的问题,并且我对可能的解决方案感到好奇。
您为什么不只绑定到某个东西,然后在绑定的内容(例如,视图模型)中进行工作? 它可能会变得越来越干净。
转换器在理论上很好,但是在构建了许多大型WPF项目之后,出于上述原因,我几乎再也没有使用它们。 当然,您可以让它做您想做的事,但是有什么意义呢? 您几乎没有控制如何以及何时进行这些转换。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.