XAML内のWPFで、ボタンに適用されてボタンが無効になると、無効になっている間は0.5の不透明度にフェードし、一度有効にすると1.0の不透明度にフェードバックするようにControlTemplateを拡張する方法。
この視覚効果は、親が無効になっている場合にも機能するはずです。
XAML内のWPFで、ボタンに適用されてボタンが無効になると、無効になっている間は0.5の不透明度にフェードし、一度有効にすると1.0の不透明度にフェードバックするようにControlTemplateを拡張する方法。
この視覚効果は、親が無効になっている場合にも機能するはずです。
このためにControlTemplateは必要ありません。あなたはただのスタイルでこれを達成することができます。次のボタンスタイルは、すべてのボタンに適用されます。IsEnabledがtrueの場合は不透明度を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ソリューションが必要でしたか?
アップデート
TemplateBindingはConverterをサポートしていないと思うので、ControlTemplateでこれを実行する場合は、論理ツリーで十分に高い次のBindingステートメントのようなものを使用する必要があります。
Opacity={Binding Path=IsEnabled,
RelativeSource={RelativeSource TemplatedParent},
Converter={StaticResource BoolToDoubleConverter}}
ここで、BoolToDoubleConverterはIValueConverterであり、trueの場合は1を返し、falseの場合は0.5を返します。スタイルを使用できるのであれば、スタイルアプローチをお勧めします。はるかに簡単だと思います。