【问题标题】:Setting converter value to null将转换器值设置为空
【发布时间】:2011-11-15 20:21:51
【问题描述】:

我有一个与转换器参数绑定的通用函数。当我不需要转换器时,我想传入 null 但它不允许我说:

Cannot set MultiBinding because MultiValueConverter must be specified.

在函数中分配它之前,我检查转换器是否为空,但我猜问题是IMultiValueConverter 不接受 null 作为值。

有没有办法实现这一点,而不创建只返回输入的转换器或重载方法?

protected MultiBinding CreateBinding(object source, IMultiValueConverter converter, object parameter, object [] dps)
    {
        MultiBinding multiBinding = new MultiBinding();
        if ( converter != null )
        multiBinding.Converter = converter;
        multiBinding.ConverterParameter = parameter; 
        .....

换句话说,我想使用上面的函数来模拟没有转换器的直接属性绑定。

【问题讨论】:

    标签: wpf binding parameters null converter


    【解决方案1】:

    只有在您指定 MultiValueConverter 或 StringFormat 来定义如何根据每个源计算输出时,MultiBindings 才有意义。

    我不确定您想要实现什么,但如果您指定一个空的 StringFormat (string.Empty),您应该不会收到任何错误,但它不会在运行时执行任何操作。

    【讨论】:

    • 我不想每次都打四行来设置绑定,太占空间了。我想要一个通用函数,它可以在给定四个参数的情况下创建绑定。它可以是单个绑定,也可以是带参数的多绑定。我不确定您在说 StringFormat 时指的是什么,您的意思是将其作为值传递给 convter。
    • 那么当你只有一个源时使用绑定,当你有多个源时使用多重绑定。
    • 那么我必须有一个重载方法或两个单独的方法,因为该函数必须有一个或多个绑定返回类型。
    • 或者您可以返回BindingBase,它是所有类型绑定的基类。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-15
    • 2017-05-04
    相关资源
    最近更新 更多