İ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!
+1 Ancak DiscreteObjectKeyFrames'teki KeyTime'ın doğru olduğundan emin misiniz? – AnthonyWJones
@Anthony - Belki bundan bahsetmiyorsunuz. Bizim uygulamada çalışmak için * kodu * görünür * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * – ChrisF
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