我有一個Stackpanel One,它有一些內容,一個圖像和一個隱藏的SubStackpanel。單擊圖像時,圖像應旋轉90度,然後向下滑動SubStack面板。 當再次點擊圖像時,圖像應該旋轉回原來的位置,並且SubStackpanel應該滑動到默認的隱藏位置。WPF Storyboard - 同樣的觸發器,但是反向行爲
我幾乎得到了這個工作,問題是我不知道如何在兩個不同的Storyboard動畫中使用相同的Trigger事件。所以現在只有按鈕和SubStackPanel中的第一個動畫發生,每次圖像被點擊。 我試過了AutoReverse屬性,但動畫完成後立即激發。這當然應該僅在用戶第二次點擊圖像時發生。
我想實現這一點,只使用標記。
這是我當前的代碼:
<Grid>
<StackPanel Grid.Row="0" Orientation="Vertical" Background="Beige" >
<StackPanel.Triggers>
<EventTrigger SourceName="ImageShowPanelTwo" RoutedEvent="Image.MouseDown">
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Storyboard.TargetName="SubPanel" Storyboard.TargetProperty="(StackPanel.Height)" From="0" To="66" Duration="0:0:0.5" />
</Storyboard>
</BeginStoryboard>
</EventTrigger>
<EventTrigger SourceName="ImageShowPanelTwo" RoutedEvent="Image.MouseDown">
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Storyboard.TargetName="SubPanel" Storyboard.TargetProperty="(StackPanel.Height)" From="66" To="0" Duration="0:0:0.5" />
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</StackPanel.Triggers>
<TextBlock>Panel One</TextBlock>
<Image Name="ImageShowPanelTwo" Width="26" Height="26" Source="ImageRotate.png" RenderTransformOrigin=".5,.5" >
<Image.RenderTransform>
<RotateTransform x:Name="AnimatedRotateTransform" Angle="0" />
</Image.RenderTransform>
<Image.Triggers>
<EventTrigger RoutedEvent="Image.MouseDown">
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Storyboard.TargetName="AnimatedRotateTransform"
Storyboard.TargetProperty="Angle"
By="0"
To="90"
Duration="0:0:0.5"
AutoReverse="True"/>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
<EventTrigger RoutedEvent="Image.MouseDown">
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Storyboard.TargetName="AnimatedRotateTransform"
Storyboard.TargetProperty="Angle"
By="90"
To="0"
Duration="0:0:0.5"
AutoReverse="True"/>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Image.Triggers>
</Image>
<StackPanel Name="SubPanel" Background="LightGreen" Height="66">
<TextBlock>SubPanel</TextBlock>
<TextBlock>SubPanel</TextBlock>
</StackPanel>
</StackPanel>
</Grid>
希望你能幫助:)
非常感謝您的回答! :) 我試過了你的代碼,但是我得到一個錯誤:無法在樣式設置器上設置TargetName屬性。 - 我研究過這個問題,看起來這是一個範圍問題,因爲這是在一種風格中定義的? 此外,我不知道你的解決方案是否可行,因爲我只想在XAML標記中實現這一點。因爲我想在資源中定義這種行爲,並在其他地方使用它。這意味着我不能在代碼隱藏中定義一個bool並將其用作綁定:( – Farsen
啊..我們有兩個問題...首先是'RotateTransform'類沒有'Style'屬性來移動這個動畫,如果你不能定義'bool'屬性,那麼這個方法根本就不起作用。 – Sheridan
嗯,這意味着它不可能爲圖像定義樣式或類似的圖像,使它在點擊時旋轉? – Farsen