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