簡體   English   中英

在 ControlTemplate 中干凈地跳過 storyboard

[英]Skip storyboard cleanly in ControlTemplate

我有一個定義 ControlTemplate 的 ToggleButton 樣式。 我的 ToggleButton 在更改狀態時是動畫的,但是當我導航到新頁面時我不希望它動畫。 因此,我使用 SkipStoryboardToFill 在 Loaded 事件上添加了一個 EventTrigger 以避免這種行為,它可以滿足我的要求。

我現在唯一的問題是,當我添加一個新的 ToggleButton 時,它會嘗試跳過尚未啟動的情節提要,生成 Animation 警告(“無法執行操作,因為指定的 Storyboard 從未應用於此 ZA8CFDE6331BD59EB2ACZC 以進行交互控制。 ") 這似乎會影響我的應用程序的性能。

我可能可以解決這個問題,但我寧願解決實際問題。 有沒有辦法在我的 EventTrigger 中添加條件?

<ControlTemplate.Triggers>
    <EventTrigger RoutedEvent="ToggleButton.Loaded">
        <SkipStoryboardToFill BeginStoryboardName="checkedSB" />
        <SkipStoryboardToFill BeginStoryboardName="uncheckedSB" />
    </EventTrigger>
    <DataTrigger Binding="{Binding IsChecked, RelativeSource={RelativeSource Self}}" 
                 Value="true">

        <DataTrigger.EnterActions>
            <BeginStoryboard Name="checkedSB">
                <Storyboard Storyboard.TargetName="Ellipse" 
                            Storyboard.TargetProperty="Margin">
                    <ThicknessAnimation To="20 1 2 1" Duration="0:0:0.1" />
                </Storyboard>
            </BeginStoryboard>
        </DataTrigger.EnterActions>

        <DataTrigger.ExitActions>
            <BeginStoryboard Name="uncheckedSB">
                <Storyboard Storyboard.TargetName="Ellipse" 
                            Storyboard.TargetProperty="Margin">
                    <ThicknessAnimation To="2 1 2 1" Duration="0:0:0.1"/>
                </Storyboard>
            </BeginStoryboard>
        </DataTrigger.ExitActions>

    </DataTrigger>
</ControlTemplate.Triggers>

有沒有辦法在我的 EventTrigger 中添加條件?

簡短的回答:沒有。

引發相應事件時始終應用EventTrigger

如果您想有條件地觸發動畫,您應該切換到使用MultiDataTrigger或以編程方式實現動畫。

暫無
暫無

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

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