我想将Textblock.Text
绑定到我已经完成的类属性,但是当此值为null时,我想要使用新属性,如果那是“null”,然后是要设置的默认值。我认为这是PriorityBinding的用途吗?
<TextBlock.Text>
<PriorityBinding>
<Binding Path="Property1"/>
<Binding Path="Property2"/>
<Binding Source="---"/>
</PriorityBinding>
</TextBlock.Text>
答案 0 :(得分:3)
null
是Textblock.Text
属性的有效值,因此它永远不会使用任何其他绑定。
来自MSDN:
PriorityBinding允许您关联绑定目标(目标)属性 带有绑定列表。第一个返回值的绑定 成功成为主动绑定。
如果出现以下情况,绑定会成功返回值:
绑定源的路径成功解析。
值转换器(如果有)能够转换结果值。
- 醇>
结果值对目标属性有效。
值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
过滤到下一个绑定。