如何控件模板Enabled属性绑定到WPF XAML透明度
-
16-09-2019 - |
题
在内部XAML WPF如何当施加到一个按钮和该按钮被停用而禁用和启用一次衰落回到1.0不透明它消失至0.5的不透明度延伸的ControlTemplate为使得
此视觉效果也应该工作当父被禁用。
解决方案
您不需要为这个控件模板。你可以只用风格做到这一点。下面的按钮样式应用到所有按钮。它设置不透明度为0.5时的IsEnabled是真实的,它返回到1时自动触发条件已不适用。如果你在一个风格应用控件模板,可以将该触发添加到一个。它也可以当自从的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>
还是你特别需要一个控件模板解决方案?
<强>更新强>
我不认为TemplateBinding支持转换器,所以如果你想这样做的ControlTemplate中,你需要使用类似下面约束力的声明在逻辑树不够高。
Opacity={Binding Path=IsEnabled,
RelativeSource={RelativeSource TemplatedParent},
Converter={StaticResource BoolToDoubleConverter}}
其中BoolToDoubleConverter是假返回1为真和0.5的IValueConverter。我还是建议样式的方法,如果你可以使用样式。更简单的,我相信。
不隶属于 StackOverflow