簡體   English   中英

WPF 樣式觸發器行為怪異

[英]WPF Style Triggers acting weird

我有一個通過標簽屬性改變其背景漸變的網格。 當我將標簽設置為“啟用”時,animation 工作正常,但問題是當我將標簽設置為“禁用”時,animation 無法啟動。 從“啟用”開始,我只能將 animation 顯示為“禁止”標簽,然后我不能將 go 返回“禁用”或“啟用”。

我錯過了什么或做錯了什么? 提前致謝

<Grid.Style>
<Style TargetType = "Grid"> 
    <Style.Triggers> 
        <Trigger Property = "Tag" Value = "Disabled">    
            <Trigger.EnterActions>    
                <BeginStoryboard>    
                    <Storyboard>    
                        <ColorAnimation
                            Storyboard.TargetProperty = "Background.GradientStops[0].Color"
                            From = "{x:Null}"
                            To = "{StaticResource disabled_1}" Duration = "0:0:1" />

                        <ColorAnimation
                            Storyboard.TargetProperty = "Background.GradientStops[1].Color"
                            From = "{x:Null}"                                
                            To = "{StaticResource disabled_2}" Duration = "0:0:1" />  
                    </Storyboard>  
                </BeginStoryboard>  
            </Trigger.EnterActions>  
        </Trigger>  
        <Trigger Property = "Tag" Value = "Enabled">     
                <Trigger.EnterActions>     
                    <BeginStoryboard>     
                        <Storyboard>     
                            <ColorAnimation
                                Storyboard.TargetProperty = "Background.GradientStops[0].Color"
                                From = "{x:Null}"
                                To = "{StaticResource enabled_1}" Duration = "0:0:1" />  
                            <ColorAnimation
                                Storyboard.TargetProperty = "Background.GradientStops[1].Color"
                                From = "{x:Null}"
                                To = "{StaticResource enabled_2}" Duration = "0:0:1" />  
                        </Storyboard>
                      </BeginStoryboard>  
                </Trigger.EnterActions>  
            </Trigger>  
            <Trigger Property = "Tag" Value = "Prohibited">     
                <Trigger.EnterActions>     
                    <BeginStoryboard>     
                        <Storyboard>
                            <ColorAnimation
                                Storyboard.TargetProperty = "Background.GradientStops[0].Color"
                                From = "{x:Null}"
                                To = "{StaticResource prohibited_1}" Duration = "0:0:1" />

                            <ColorAnimation
                                Storyboard.TargetProperty = "Background.GradientStops[1].Color"
                                From = "{x:Null}"
                                To = "{StaticResource prohibited_2}" Duration = "0:0:1" />  
                        </Storyboard>  
                    </BeginStoryboard>  
                </Trigger.EnterActions>  
            </Trigger>  
        </Style.Triggers>  
    </Style>  
</Grid.Style>

您已經定義了動畫,但您還需要定義如何停止動畫以啟動其他動畫。

有兩種方法可以做到這一點。

  1. 在所有觸發器上定義ExitActions

例子:

<Trigger Property = "Tag" Value = "Enabled">
    <Trigger.EnterActions>
        <BeginStoryboard Name="enabledsb">
            // Removed for brevity
        </BeginStoryboard>
    </Trigger.EnterActions>
    <Trigger.ExitActions>
        <StopStoryboard BeginStoryboardName="enabledsb"/>
    </Trigger.ExitActions>
</Trigger>
  1. 在您制作新的動畫之前,在您的動畫上定義一個StopStoryboard

例子:

<Trigger Property = "Tag" Value = "Disabled">
    <Trigger.EnterActions>
        <StopStoryboard BeginStoryboardName="enabledsb"/>
        <BeginStoryboard Name="disabledsb">
             // Removed for brevity
        </BeginStoryboard>
    </Trigger.EnterActions>
</Trigger>

暫無
暫無

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

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