7

如果绑定值为 false 或 null,则有一个我想要禁用的按钮。这是我试过的。

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

我有一个 SearchItem.WFBatchFolderStatus 可以为空的情况(并且出于有效的商业原因)。如果 SearchItem.WFBatchFolderStatus 为空,那么我希望禁用该按钮。当 SearchItem.WFBatchFolderStatus 为 null 时,转换器不会触发。如果 SearchItem.WFBatchFolderStatus 不为空,则转换器触发。如果值为 null,则转换器仅返回 false,否则返回该值。但是转换器永远不会看到空值。当 SearchItem.WFBatchFolderStatus 为空时,按钮已启用(不是我想要的)。如果我删除 TargetValue 和/或 Converter,则当 SearchItem.WFBatchFolderStatus 为空时,按钮仍处于启用状态。

4

2 回答 2

10

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

于 2011-08-21T20:05:57.363 回答
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>
于 2011-08-21T20:06:22.010 回答