2010-12-03 16 views

cevap

6

İstediğiniz nedir?

ShowState ve HideState'u tanımlayan VisualStateManager'a ihtiyacınız vardır. Bunlar sırasıyla görünürlüğü kontrol eden bir Storyboard tanımlamaktadır.

Ardından animasyon ile "ShowState" içine göndermek için elemana

VisualStateManager.GoToState(uiElement, "ShowState", true); 

diyoruz. Durum ismini "HideState" ile değiştirmek, elemanı gizler.

VisualStateManager için kullandığımız XAML aşağıdadır. Aynı zamanda opaklığı canlandırır, böylece bir solma/sönme olur. Bunlara

<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> 

NOTKeyTime değerleri uygulamanız için verdiği gerekebilir. Bunlara tekrar baktığımda, "HideState" zamanlarının her ikisinin de 0 olduğunu görüyorsunuz, bu da size istediğiniz efekti vermeyebilir. AnthonyWJones bizim uygulamada bir hata buldu!

+0

+1 Ancak DiscreteObjectKeyFrames'teki KeyTime'ın doğru olduğundan emin misiniz? – AnthonyWJones

+0

@Anthony - Belki bundan bahsetmiyorsunuz. Bizim uygulamada çalışmak için * kodu * görünür * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * – ChrisF

+0

Beklendiği gibi kaybolmuyor. BeginTime ve Süre özelliklerini kaybedebilir ve tüm KeyTime özelliklerini 1 saniyeye ayarlayabilirsiniz. o zaman beklenen davranışı alırsınız. – AnthonyWJones

İlgili konular