将不同的触发器与逻辑

时间:2017-08-20 13:21:20

标签: wpf

我正面临这个问题,我真的不明白如何正确设置自定义样式控件的动画效果。我理解这是一个沉重的主题,我读到了许多方法,如VisualStateManager,触发器和行为。但是,每种方法都有其局限性,我总是回到同一个问题:我该怎么做呢?现在,我坚持使用Trigger方法,因为我认为它是最常用的方法。

但是,我在创建动画逻辑方面苦苦挣扎。例如,我想为文本框的边框设置动画。我创建了三个事件触发器:MouseEnterMouseLeaveGotFocus。只要鼠标进入控件,文本框的边框就会改变颜色。当它聚焦时,它会再次改变颜色。但是,当鼠标离开时,文本框边框不会保留焦点颜色,但会显示我在MouseLeave事件触发器中定义的颜色。在这种情况下,如何创建保持焦点颜色的逻辑?

如何解决这些任务?您是否可以推荐描述实际解决方案的良好资源,而不仅仅是可能的方法?

1 个答案:

答案 0 :(得分:0)

您可以使用监听多个属性的MultiTriggerMultiDataTrigger

<Style.Triggers>
    <MultiTrigger>
        <MultiTrigger.Conditions>
            <Condition Property="IsMouseOver" Value="true"/>
            <Condition Property="IsKeyboardFocused" Value="true"/>
        </MultiTrigger.Conditions>
        <Setter Property="BorderBrush" Value="Red"/>
    </MultiTrigger>
</Style.Triggers>
<MultiTrigger>
    <MultiTrigger.Conditions>
        <Condition Property="IsMouseOver" Value="true"/>
        <Condition Property="IsKeyboardFocused" Value="true"/>
    </MultiTrigger.Conditions>
    <MultiTrigger.EnterActions>
        <BeginStoryboard>
            <Storyboard>
                ...
            </Storyboard>
        </BeginStoryboard>
    </MultiTrigger.EnterActions>
...

WPF MultiTrigger和MultiDataTrigger: http://www.wpf-tutorial.com/styles/multi-triggers-multitrigger-multidatatrigger/