2015-02-03 3 views
0

활성화 된 속성이 두 번 발생하는 버튼이 있습니다. 뷰 모델에서 IsEnabled 속성을 false로 설정하면 버튼이 비활성화되어 제대로 작동합니다. 반면 UI의 유효성 검사 단추가 비활성화되어 있으면이 단추가 작동하지 않아 데이터 트리거가 작동하지 않음을 나타냅니다. 도와주세요. IsEnabled="{Binding IsEnabled}" 항상 사용하는 것입니다 귀하의 경우 있도록하는 <Style>의 모든 속성 집합을 통해 개체 걸릴 precendence의 <Tag> 설정Wpf DataTrigger가 작동하지 않습니다.

<Button x:Name="BtnValidate" Content="Validate" Height="24" VerticalAlignment="Top" Grid.Column="2" Width="83" Command="{Binding ValidateCommand}" IsEnabled="{Binding IsValidateEnabled}" HorizontalAlignment="Left" Margin="8,28,0,0" /> 
    <Button Name="BtnReload" IsEnabled="{Binding IsEnabled}" HorizontalAlignment="Left" Width="123" Grid.Row="0" Grid.Column="5" Content="Reload" Command="{Binding DateCommand}" Margin="8,24,0,32"> 
         <Button.Style> 
          <Style TargetType="Button"> 
           <Style.Triggers> 
            <DataTrigger Binding="{Binding ElementName=BtnValidate,Path=IsEnabled}" Value="False"> 
             <Setter Property="IsEnabled" Value="False"></Setter> 
            </DataTrigger> 
           </Style.Triggers> 
          </Style> 
         </Button.Style> 
        </Button> 

답변

4

property는. 자세한 내용은 MSDN's Dependency Property Precedence List을 참조하십시오. 트리거에 설정된 속성 레이첼이 작동 <Style>

<Button Name="BtnReload" Content="Reload" Command="{Binding DateCommand}"> 
    <Button.Style> 
     <Style TargetType="Button"> 
      <Setter Property="IsEnabled" Value="{Binding IsEnabled}"/> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding ElementName=BtnValidate,Path=IsEnabled}" Value="False"> 
        <Setter Property="IsEnabled" Value="False"/? 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 
    </Button.Style> 
</Button> 
+0

덕분에 설정된 속성보다 우선하기 때문에

이 솔루션은 태그 정의에서 그리고 스타일에 IsEnabled 속성을 이동하는 것입니다 ... – nikhil

+0

Button의 IsEnabled 속성을 False로 설정하고 트리거가 시작되면 DataContext의 IsEnabled 속성을 설정하지 않으면 문제가 발생한다고 생각합니다. 간단한 IsEnabled 속성은 IsEnabled에 바인딩되지만 트리거 설정자에서 고정 값으로 설정되며 원래 바인딩을 덮어 씁니다. –

관련 문제