在内部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。我还是建议样式的方法,如果你可以使用样式。更简单的,我相信。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top