数据绑定和应用转换器时取反布尔属性

Rob*_*win 2 data-binding wpf ivalueconverter

在XAML绑定标记中可以否定布尔属性。不知道这是正确的描述。例如,我使用一个内置的转换器来基于其是否处于活动状态来设置窗口边框控件的可见性。

<Border BorderBrush="{StaticResource BorderColorBrush}" 
        BorderThickness="1" 
        Visibility="{Binding IsActive, 
                     RelativeSource={RelativeSource FindAncestor, 
                                     AncestorType={x:Type Window}}, 
                     Converter={StaticResource bool2VisibilityConverter}}" />
Run Code Online (Sandbox Code Playgroud)

与我相反的是,如果Window处于活动状态,我希望将Visibility设置为false。这只是一个例子,但是我遇到了其他情况,在这种情况下可以应用“!” 转换为股票转换器正在评估的布尔属性,因此我不必编写自定义变量。

Cle*_*ens 5

一种替代方法是使用DataTrigger代替绑定转换器:

<Border BorderBrush="{StaticResource BorderColorBrush}" 
        BorderThickness="1">
    <Border.Style>
        <Style TargetType="Border">
            <Style.Triggers>
                <DataTrigger Binding="{Binding IsActive,
                                       RelativeSource={RelativeSource FindAncestor,
                                                       AncestorType=Window}}"
                             Value="True">
                    <Setter Property="Visibility" Value="Hidden"/>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </Border.Style>
</Border>
Run Code Online (Sandbox Code Playgroud)