如果绑定的源不可用,IsEnabled将变为False。

7
如果绑定的值为 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为null时,转换器不会触发。如果SearchItem.WFBatchFolderStatus不是null,则转换器会触发。转换器只返回false值,如果其它情况则返回值。但是转换器从来没有收到过null的值。当SearchItem.WFBatchFolderStatus为null时,按钮是启用的(这不是我想要的结果)。如果我删除TargetValue和/或Converter,则在SearchItem.WFBatchFolderStatus为null时,按钮仍然是启用状态。
2个回答

10

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


4
使用样式如何?
<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>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接