2011-08-21 6 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가 null이면 변환기가 실행되지 않습니다. SearchItem.WFBatchFolderStatus가 null이 아닌 경우 변환기가 실행됩니다. 값이 null의 경우는 false를, 그렇지 않은 경우는 false를 돌려줍니다. 그러나 변환기는 결코 null을 보지 못합니다. SearchItem.WFBatchFolderStatus가 null이면 버튼이 활성화됩니다 (원하는 것은 아님). SearchItem.WFBatchFolderStatus가 null 인 경우 TargetValue 및/또는 Converter를 제거하면 버튼이 계속 활성화됩니다.

답변

7

경로의 일부가 null 인 경우 바인딩이 실패하면 Binding.FallbackValue을 false로 설정하고 WFBatchFolderStatus이 null 인 경우이 경로를 비활성화해야합니다.

+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> 
관련 문제