【问题标题】:Can I make a WPF style take precedence over a local value?我可以让 WPF 样式优先于本地值吗?
【发布时间】:2013-04-16 22:42:45
【问题描述】:

我在我的 WPF 项目中创建了一个布尔附加属性,并且我希望将此属性设置为 true 的元素以某种方式显示,而不管在 XAML 中设置的任何本地本地值如何。

documentation 我了解到,默认情况下,本地值优先于样式设置器和样式触发器。是否可以创建优先于本地值的样式触发器?

【问题讨论】:

  • 我不知道这种技术,但我知道你可以做很多子类化和编码来获得你想要的效果。还有更简单的方法,使用动画。使用 DiscreteObjectKeyFrame 几乎可以做任何事情,并且动画的优先级高于任何事情。

标签: wpf xaml styles


【解决方案1】:

使用 Erti-Chris Eelmaa 在他对我的问题的评论中提到的技术,我最终创建了一个可以解决问题的动画:

<Style TargetType="{x:Type Button}">
    <Style.Triggers>
        <Trigger Property="my:Ext.IsReadOnly" Value="True">
            <Trigger.EnterActions>
                <BeginStoryboard Name="IsReadOnly">
                    <Storyboard>
                        <BooleanAnimationUsingKeyFrames Storyboard.TargetProperty="(Button.IsEnabled)" Duration="0:0:0">
                            <DiscreteBooleanKeyFrame Value="False" KeyTime="0:0:0" />
                        </BooleanAnimationUsingKeyFrames>
                    </Storyboard>
                </BeginStoryboard>
            </Trigger.EnterActions>
            <Trigger.ExitActions>
                <RemoveStoryboard BeginStoryboardName="IsReadOnly" />
            </Trigger.ExitActions>
        </Trigger>
    </Style.Triggers>
</Style>

这优先于 Button.IsEnabled 的任何本地值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-18
    • 2016-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多