0
我有一個非常基本的用戶控件與一個圖像的按鈕。我想通過將其更改爲不同的圖像來爲按鈕的圖像製作動畫。如何爲WPF中的圖像內容製作動畫?
<UserControl.Resources>
<Image x:Key="GlyphDefault" Source="pack://application:,,,/X;component/images/Glyphs_Default.png" Height="8" Width="8" />
<Image x:Key="GlyphClicked" Source="pack://application:,,,/X;component/images/Glyphs_Click.png" Height="8" Width="8" />
</UserControl.Resources>
<Grid>
<VisualStateManager.VisualStateGroups>
<VisualStateGroup Name="MouseStates">
<VisualState Name="MouseHover" >
<Storyboard>
<ObjectAnimationUsingKeyFrames
Storyboard.TargetName="GlyphButton"
Storyboard.TargetProperty="Content"
Duration="0:0:1" >
<ObjectAnimationUsingKeyFrames.KeyFrames>
<DiscreteObjectKeyFrame KeyTime="0:0:1">
<DiscreteObjectKeyFrame.Value="{StaticResource GlyphClicked}" />
</DiscreteObjectKeyFrame>
</ObjectAnimationUsingKeyFrames.KeyFrames>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
<VisualState Name="MouseNotHover" >
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<Button x:Name="GlyphButton"
MouseLeave="GlyphButton_MouseLeave"
MouseEnter="GlyphButton_MouseEnter"
Content="{StaticResource GlyphDefault}"
/>
</Grid>
不幸的是,當我運行這一點,將鼠標懸停在按鈕我得到「可凍結不能被凍結」的例外(鼠標事件處理程序改變狀態)。它似乎試圖凍結當前的圖像,但不能出於某種原因。
我試着做它不使用靜態資源(只是把圖片在線)過,但同樣的錯誤。奇怪的是,我可以找到關於在Content屬性上做動畫的文檔或博客。我不得不想象這將是一種常見的情況。任何想法,我做錯了什麼?
我非常感謝您對這個幫助!
感謝查理。我已經考慮過了,但認爲它感到ha。。有一件事,我正在與WPF學習雖然是有些事情覺得有點hackish實際上是最佳實踐:-) – 2010-05-06 20:08:58