多个绑定目标(如果一个值为 null)
本文关键字:一个 null 如果 绑定 目标 | 更新日期: 2023-09-27 18:30:23
我想将Textblock.Text
绑定到我已经完成的类属性,但是当此值为空时,我希望使用一个新属性,如果为空,则设置默认值。我以为这就是优先级绑定的用途?
<TextBlock.Text>
<PriorityBinding>
<Binding Path="Property1"/>
<Binding Path="Property2"/>
<Binding Source="---"/>
</PriorityBinding>
</TextBlock.Text>
null
是 Textblock.Text
属性的有效值,因此它永远不会使用任何其他绑定。
从 MSDN:
优先级绑定允许您关联绑定目标(目标)属性 带有绑定列表。返回值的第一个绑定 成功成为活动绑定。
在以下情况下,绑定将成功返回值:
- 值
绑定源的路径已成功解析。
转换器(如果有)能够转换结果值。
生成的值对目标属性有效。
值 DependencyProperty.UnsetValue 不被视为成功 返回值。
您可以添加一个绑定转换器,该转换器在属性值null
时返回DependencyProperty.UnsetValue
:
public class NullValueConverter : IValueConverter
{
public object Convert(
object value, Type targetType, object parameter, CultureInfo culture)
{
return value ?? DependencyProperty.UnsetValue;
}
...
}
引发异常将导致无法解析属性,从而允许PriorityBind
筛选到下一个绑定。