如果一个值为null,则为多个绑定目标

时间:2016-01-14 09:15:40

标签: c# wpf xaml binding

我想将Textblock.Text绑定到我已经完成的类属性,但是当此值为null时,我想要使用新属性,如果那是“null”,然后是要设置的默认值。我认为这是PriorityBinding的用途吗?

<TextBlock.Text>
    <PriorityBinding>
            <Binding Path="Property1"/>
            <Binding Path="Property2"/>
            <Binding Source="---"/>
    </PriorityBinding>
</TextBlock.Text>

2 个答案:

答案 0 :(得分:3)

nullTextblock.Text属性的有效值,因此它永远不会使用任何其他绑定。

来自MSDN

  

PriorityBinding允许您关联绑定目标(目标)属性   带有绑定列表。第一个返回值的绑定   成功成为主动绑定。

     

如果出现以下情况,绑定会成功返回值:

     
      
  1. 绑定源的路径成功解析。

  2.   
  3. 值转换器(如果有)能够转换结果值。

  4.   
  5. 结果值对目标属性有效。

  6.         

    值DependencyProperty.UnsetValue不被视为成功   返回值。

当属性值为DependencyProperty.UnsetValue时,您可以添加一个返回null的绑定转换器:

public class NullValueConverter : IValueConverter
{
    public object Convert(
        object value, Type targetType, object parameter, CultureInfo culture)
    {
        return value ?? DependencyProperty.UnsetValue;
    }
    ...
}

答案 1 :(得分:0)

抛出异常将导致属性无法解析,从而允许PriorityBind过滤到下一个绑定。