C# 如何将启用ControlTemplate的属性绑定到WPF XAML中的不透明度
在XAML内部的WPF中,如何扩展ControlTemplate,使其在应用于按钮且按钮被禁用时淡入0.5不透明度,禁用时淡入0.5不透明度,启用后淡入1.0不透明度C# 如何将启用ControlTemplate的属性绑定到WPF XAML中的不透明度,c#,wpf,xaml,controltemplate,opacity,C#,Wpf,Xaml,Controltemplate,Opacity,在XAML内部的WPF中,如何扩展ControlTemplate,使其在应用于按钮且按钮被禁用时淡入0.5不透明度,禁用时淡入0.5不透明度,启用后淡入1.0不透明度 当禁用父级时,此视觉效果也应起作用。不需要控件模板。您只需使用样式即可实现这一点。以下按钮样式应用于所有按钮。当IsEnabled为true时,它将不透明度设置为0.5,当触发条件不再适用时,它会自动将其返回到1。如果要在样式中应用ControlTemplate,可以将此触发器添加到该样式中。由于IsEnabled是继承的,因此当
当禁用父级时,此视觉效果也应起作用。不需要控件模板。您只需使用样式即可实现这一点。以下按钮样式应用于所有按钮。当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>
其中BoolToDoubleConverter是一个IValueConverter,返回1表示真,返回0.5表示假。如果您可以使用样式,我仍然推荐样式方法。我相信这要简单得多
Opacity={Binding Path=IsEnabled,
RelativeSource={RelativeSource TemplatedParent},
Converter={StaticResource BoolToDoubleConverter}}