wpf 如何在绑定中模拟TargetNullValue?

raogr8fs  于 2023-04-13  发布在  其他
关注(0)|答案(1)|浏览(154)

我想将样式绑定到一个可空的颜色。如果有值-它使用该值来创建纯色画笔,否则使用另一种颜色。我不能使用绑定TargetNullValue,因为另一种颜色是绑定。例如:

<Setter Property="Foreground">
    <Setter.Value>
        <PriorityBinding TargetNullValue="{Binding Foreground, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=Window}}">
            <Binding Path="Row.ForegroundColour" IsAsync="True" Converter="{StaticResource colourConverter}"/>
            <Binding Path="Foreground" ElementName="me" IsAsync="True"/>
        </PriorityBinding>

生成错误:

A 'Binding' cannot be set on the 'TargetNullValue' property of type 'PriorityBinding'. A 'Binding' can only be set on a DependencyProperty of a DependencyObject.'

实现简单逻辑功能的现实方法是什么?如果设置了颜色,就使用颜色,如果没有设置,就使用默认颜色(考虑到两种颜色都来自装订)?

dhxwm5r4

dhxwm5r41#

设置默认值。使用DataTrigger处理NULL值情况。覆盖dataTrigger中的默认值。

<Style TargetType="{x:Type Button}">
    <Setter Property="Background" Value="{Binding RelativeSource={RelativeSource AncestorType=Grid}, Path=Background}"/>
    <Style.Triggers>
         <DataTrigger Binding="{Binding RelativeSource={RelativeSource AncestorType=Grid}, Path=Background}" Value="{x:Null}">
               <Setter Property="Background" Value="CadetBlue"/>
         </DataTrigger>
    </Style.Triggers>
 </Style>

相关问题