Wpf 如果绑定。源不可用,则IsEnabled False

Wpf 如果绑定。源不可用,则IsEnabled False,wpf,xaml,data-binding,isenabled,Wpf,Xaml,Data Binding,Isenabled,如果绑定值为false或null,我希望禁用一个按钮。这是我试过的 <Button Content="Open" IsEnabled="{Binding SearchItem.WFBatchFolderStatus.UserCanOpen, Mode=OneWay, TargetNullValue=false, Converter={StaticResource booleanPassThru}}" /> 我有一个案例,其中SearchItem.WFBatchFolderS

如果绑定值为false或null,我希望禁用一个按钮。这是我试过的

<Button Content="Open" IsEnabled="{Binding SearchItem.WFBatchFolderStatus.UserCanOpen, Mode=OneWay, TargetNullValue=false, Converter={StaticResource booleanPassThru}}" />  


我有一个案例,其中SearchItem.WFBatchFolderStatus可以为null(并且出于有效的业务原因)。如果SearchItem.WFBatchFolderStatus为null,则我希望禁用该按钮。当SearchItem.WFBatchFolderStatus为空时,转换器不会启动。如果SearchItem.WFBatchFolderStatus不为null,则转换器将触发。如果值为null,则转换器仅返回false,否则返回值。但转换器从未看到空值。当SearchItem.WFBatchFolderStatus为空时,按钮被启用(不是我想要的)。如果删除TargetValue和/或转换器,则当SearchItem.WFBatchFolderStatus为null时,按钮仍处于启用状态。

如果路径的一部分为null,则绑定失败,将设置为false,如果
WFBatchFolderStatus
为null,则应禁用该按钮。

改用样式如何

<Page.Resources>
    <Style x:Key="SomeStyle" TargetType="{x:Type Button}">
        <Style.Triggers>
            <DataTrigger Binding="{Binding SearchItem.WFBatchFolderStatus.UserCanOpen}" Value="{x:Null}">
                <Setter Property="IsEnabled" Value="False"/>
            </DataTrigger>
        </Style.Triggers>
    </Style>
</Page.Resources>
<Grid>
    <Button Content="Open" Style="{StaticResource SomeStyle}" />
</Grid>