繁体   English   中英

WPF-ConverterParameter中的动态值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM