2011-08-21 27 views
3

有一個按鈕,我想要禁用,如果綁定值爲false或null。這是我試過的。IsEnabled False如果Binding.Source不可用

<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,則轉換器觸發。如果值爲空,則轉換器返回false,否則返回值。但轉換器從不會看到null。當SearchItem.WFBatchFolderStatus爲null時,按鈕IS被啓用(不是我想要的)。如果我刪除了TargetValue和/或Converter,那麼當SearchItem.WFBatchFolderStatus爲空時,按鈕仍然處於啓用狀態。

回答

7

如果路徑的一部分爲空,則綁定失敗,請將Binding.FallbackValue設置爲false,並且如果WFBatchFolderStatus爲空,則應將其禁用。

+0

看起來像這樣的伎倆。謝謝! – Paparazzi

2

如何使用樣式代替?

<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> 
相關問題