5
我想在可見性可以更改的控件上添加視覺效果(例如淡入,淡出)。Silverlight:添加可見和不可見狀態之間的視覺轉換
我不知道從哪裏開始做。我已經閱讀了一些關於VisualStateManager和VisualTransform的內容,但是我仍然不知道它是否可行以及該怎麼做。你可以幫我嗎 ?
謝謝
我想在可見性可以更改的控件上添加視覺效果(例如淡入,淡出)。Silverlight:添加可見和不可見狀態之間的視覺轉換
我不知道從哪裏開始做。我已經閱讀了一些關於VisualStateManager和VisualTransform的內容,但是我仍然不知道它是否可行以及該怎麼做。你可以幫我嗎 ?
謝謝
你想要什麼是可能的。
您需要一個VisualStateManager
,它定義了ShowState
和HideState
。這些又定義了控制可見性的Storyboard
。
你再調用
VisualStateManager.GoToState(uiElement, "ShowState", true);
的元素髮送到 「ShowState」 動畫。用「HideState」替換狀態名稱將隱藏該元素。
我們用於VisualStateManager
的XAML如下。它也使不透明度動畫,所以淡入/淡出。
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="VisualStates">
<VisualState x:Name="ShowState">
<Storyboard>
<DoubleAnimationUsingKeyFrames Storyboard.TargetName="LayoutRoot"
Storyboard.TargetProperty="(UIElement.Opacity)">
<EasingDoubleKeyFrame KeyTime="00:00:01"
Value="1" />
</DoubleAnimationUsingKeyFrames>
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="LayoutRoot"
Storyboard.TargetProperty="(UIElement.Visibility)">
<DiscreteObjectKeyFrame KeyTime="00:00:00">
<DiscreteObjectKeyFrame.Value>
<Visibility>Visible</Visibility>
</DiscreteObjectKeyFrame.Value>
</DiscreteObjectKeyFrame>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
<VisualState x:Name="HideState">
<Storyboard>
<DoubleAnimationUsingKeyFrames Storyboard.TargetName="LayoutRoot"
Storyboard.TargetProperty="(UIElement.Opacity)">
<EasingDoubleKeyFrame KeyTime="00:00:01"
Value="0" />
</DoubleAnimationUsingKeyFrames>
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="LayoutRoot"
Storyboard.TargetProperty="(UIElement.Visibility)">
<DiscreteObjectKeyFrame KeyTime="00:00:01">
<DiscreteObjectKeyFrame.Value>
<Visibility>Collapsed</Visibility>
</DiscreteObjectKeyFrame.Value>
</DiscreteObjectKeyFrame>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
注意這些的KeyTime
值可能需要調整您的應用。再看一遍,我看到「HideState」時間都是0,這可能不會給你想要的效果。 AnthonyWJones很可能在我們的應用程序中發現錯誤!
+1但您確定DiscreteObjectKeyFrames上的KeyTime正確嗎? – AnthonyWJones 2010-12-03 14:24:01