【问题标题】:Repeat Button Style Setter/Triggers Doesn't Work重复按钮样式设置器/触发器不起作用
【发布时间】:2016-12-31 17:58:43
【问题描述】:

我正在使用扩展 WPF 工具包的 IntegerUpDown 控件。

I was able to stylize the arrow buttons in a previous question.

之前

之后

我遇到了一些额外的样式问题:

我正在使用 PresentationFramework.Aero 和 Aero2。

<!-- RepeatButton Style -->
<Style x:Key="{x:Static theme:ResourceKeys.SpinnerButtonStyleKey}" TargetType="RepeatButton">                 
    <Style.Triggers>
        <Trigger Property="IsEnabled" Value="True">
            <Setter Property="Background" Value="Transparent" />
            <Setter Property="BorderBrush" Value="Transparent" />               
        </Trigger>

        <Trigger Property="IsEnabled" Value="False">
            <Setter Property="Background" Value="Transparent"/>
            <Setter Property="BorderBrush" Value="Transparent" />
        </Trigger>

        <Trigger Property="IsMouseOver" Value="True">
            <Setter Property="Background" Value="DarkBlue"/>
            <Setter Property="BorderBrush" Value="Transparent" />
        </Trigger>

    </Style.Triggers>
</Style>  

完整 XAML 的链接:http://pastebin.com/ETYgHEpz

IsEnabled False 触发器不会覆盖已禁用的背景或边框颜色。它总是保持白色,我需要它透明。但是我可以覆盖不透明度和边框厚度。 (Windows 10):

无法更改 IsMouseOver 背景颜色,始终为浅蓝色。 (Windows 10):

Windows 7 始终显示白色边框,即使 BorderThickeness 为 0 且颜色为透明或 {x:Null}:

我认为它被控制模板覆盖,但 IntergerUpDown 在控制模板中没有重复按钮样式,我在尝试添加一个时遇到了麻烦。我必须在外面创建样式。

【问题讨论】:

    标签: wpf visual-studio xaml


    【解决方案1】:

    当您通过样式设置器设置时,某些属性将不起作用。这是因为Dependency Property Value Precedence。尝试更改 ControlTemplate 触发器中的值。

    【讨论】:

    • IntegerUpDown 缺少 RepeatButton 的控制模板触发器。当我尝试添加一个时,它会给出错误警告。我必须在控制模板之外对其进行全局设置。现在我不得不删除扩展工具包并使用 TextBox、Buttons、C# 自己创建一个 UpDown 控件,并通过 xaml 对其进行样式设置。
    猜你喜欢
    • 2012-09-11
    • 2016-12-05
    • 2012-06-02
    • 2013-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-25
    相关资源
    最近更新 更多