XAML 내부의 WPF에서 Button에 적용될 때 버튼이 비활성화되면 비활성화 된 상태에서 0.5 불투명으로 페이드되고 활성화 된 상태에서는 1.0으로 페이드되는 방식으로 ControlTemplate을 확장하는 방법 불투명.ControlTemplate Enabled 속성을 WPF의 불투명도에 바인딩하는 방법 XAML
이 시각 효과는 부모가 사용 중지 된 경우에도 작동해야합니다.
XAML 내부의 WPF에서 Button에 적용될 때 버튼이 비활성화되면 비활성화 된 상태에서 0.5 불투명으로 페이드되고 활성화 된 상태에서는 1.0으로 페이드되는 방식으로 ControlTemplate을 확장하는 방법 불투명.ControlTemplate Enabled 속성을 WPF의 불투명도에 바인딩하는 방법 XAML
이 시각 효과는 부모가 사용 중지 된 경우에도 작동해야합니다.
ControlTemplate이 필요하지 않습니다. 스타일만으로이 작업을 수행 할 수 있습니다. 다음 버튼 스타일은 모든 버튼에 적용됩니다. IsEnabled가 true 일 때 Opacity를 0.5로 설정하고 트리거 조건이 더 이상 적용되지 않으면 자동으로 1로 되돌립니다. ControlTemplate을 스타일에 적용하는 경우이 트리거를 스타일에 추가 할 수 있습니다. IsEnabled가 상속 된 후 부모가 비활성화 된 경우에도 작동합니다.
<Window.Resources>
<Style TargetType="{x:Type Button}">
<Style.Triggers>
<Trigger Property="Control.IsEnabled" Value="false">
<Setter Property="Control.Opacity" Value="0.5" />
</Trigger>
</Style.Triggers>
</Style>
</Window.Resources>
또는 특별히 ControlTemplate 솔루션이 필요합니까?
업데이트
난 당신이 논리적 트리에서 충분히 높은 다음 바인딩 문 같은 것을 사용해야은 ControlTemplate에서이 작업을 수행하려는 경우 TemplateBinding 그렇게 컨버터를 지원합니다 생각하지 않습니다.
Opacity={Binding Path=IsEnabled,
RelativeSource={RelativeSource TemplatedParent},
Converter={StaticResource BoolToDoubleConverter}}
여기서 BoolToDoubleConverter는 true의 경우 1, false의 경우 0.5를 반환하는 IValueConverter입니다. 스타일을 사용할 수 있다면 여전히 스타일 접근 방식을 권하고 싶습니다. 훨씬 더 간단합니다.
감사합니다. 스타일 트리거처럼 작동합니다. – zproxy