簡體   English   中英

使用情節提要在WPF觸發器中平滑ExitAction

[英]Smooth ExitAction in WPF Trigger using Storyboard

我有一個WPF應用程序,在這里我想覆蓋難看的默認WPF樣式。 我創建了Styles.xaml詞典,在這里我幾乎完成了樣式,但是在動畫和不同視覺狀態(觸發)之間的平滑過渡方面存在一些問題。

我的挑戰之一是我不想將任何C#事件處理程序或其他C#代碼綁定到樣式。

在這里,我在觸發器上提供了一些代碼:

<MultiTrigger>
    <MultiTrigger.Conditions>
        <Condition Property="IsEnabled" Value="True" />
        <Condition Property="IsMouseOver" Value="True" />
        <Condition Property="IsPressed" Value="False" />
    </MultiTrigger.Conditions>
    <MultiTrigger.EnterActions>
        <BeginStoryboard Name="MouseOverStoryboard">
            <Storyboard Duration="0:0:0.25" SlipBehavior="Grow">
                <ColorAnimation Storyboard.TargetName="InnerBorder" 
                                Storyboard.TargetProperty="Background.(SolidColorBrush.Color)" 
                                To="{StaticResource White}" 
                                BeginTime="0:0:0" Duration="0:0:0.25" />
                <DoubleAnimation Storyboard.TargetName="InnerBorder" 
                                 Storyboard.TargetProperty="Opacity" 
                                 To="0.3" 
                                 BeginTime="0:0:0" Duration="0:0:0.25" />
            </Storyboard>
        </BeginStoryboard>
    </MultiTrigger.EnterActions>
    <MultiTrigger.ExitActions>
        <RemoveStoryboard BeginStoryboardName="MouseOverStoryboard" />
    </MultiTrigger.ExitActions>
</MultiTrigger>

為了使動畫更流暢,我添加了EnterAction並將Storyboard與時序一起放置在此處,因此輸入動畫很流暢且看起來不錯。

我的第一個問題是關於執行BeginStoryboard時如何恢復默認顏色,但后來我意識到可以使用RemoveStoryboard。

現在我真的不知道我的想法出了點-如何制作流暢的退出動畫? 我不應該使用RemoveStoryboard嗎?

請提供建議。 謝謝。

PS我不使用VisualStateManager,因為缺乏狀態,我不想為此實現自己的控件。

如何添加一個新的動畫對象,該對象在輸入動作動畫持續時間過去后開始。 或通過添加一個Storyboard來還原您的EnterAction來使用觸發器的ExitAction屬性。 或者您可以嘗試將Fillbehavior屬性設置為“停止...”。

另一個選擇是使用EventSetter來捕獲RoutedEvents例如MouseEnterMouseLeave

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM