2010-12-03 26 views

回答

6

你想要什麼是可能的。

您需要一個VisualStateManager,它定義了ShowStateHideState。這些又定義了控制可見性的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很可能在我們的應用程序中發現錯誤!

+0

+1但您確定DiscreteObjectKeyFrames上的KeyTime正確嗎? – AnthonyWJones 2010-12-03 14:24:01