IsEnabled False, если Binding.Source недоступен - PullRequest
5 голосов
/ 21 августа 2011

У меня есть кнопка, которую я хочу отключить, если значение привязки равно false или равно нулю.Вот, я пытался.

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

У меня есть случай, когда SearchItem.WFBatchFolderStatus может быть нулевым (и по действительным причинам бизнеса).Если SearchItem.WFBatchFolderStatus имеет значение null, я хочу, чтобы кнопка была отключена.Когда SearchItem.WFBatchFolderStatus имеет значение null, преобразователь не запускается.Если SearchItem.WFBatchFolderStatus не является нулевым, то конвертер срабатывает.Преобразователь просто возвращает false, если значение равно нулю, а в противном случае - значение.Но конвертер никогда не видит ноль.Когда SearchItem.WFBatchFolderStatus имеет значение NULL, кнопка включена (не то, что я хочу).Если я удаляю TargetValue и / или конвертер, кнопка все еще активна, когда SearchItem.WFBatchFolderStatus имеет значение null.

Ответы [ 2 ]

7 голосов
/ 22 августа 2011

Привязка не выполняется, если часть пути равна нулю, установите Binding.FallbackValue в значение false, и его следует отключить, если WFBatchFolderStatus равно нулю.

4 голосов
/ 22 августа 2011

Как насчет использования стиля вместо?

<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>
...