가시성을 변경할 수있는 컨트롤에 시각 효과 (예 : 페이드 인, 페이드 아웃)를 추가하고 싶습니다.Silverlight : 보이지 않는 상태 사이에 시각적 전환 추가
어디서부터 시작해야할지 모르겠습니다. VisualStateManager 및 VisualTransform에 대해 조금 읽었지만 가능한지, 무엇을 해야할지 아직 알 수 없습니다. 너 나 좀 도와 줄 수있어?
감사합니다.
가시성을 변경할 수있는 컨트롤에 시각 효과 (예 : 페이드 인, 페이드 아웃)를 추가하고 싶습니다.Silverlight : 보이지 않는 상태 사이에 시각적 전환 추가
어디서부터 시작해야할지 모르겠습니다. VisualStateManager 및 VisualTransform에 대해 조금 읽었지만 가능한지, 무엇을 해야할지 아직 알 수 없습니다. 너 나 좀 도와 줄 수있어?
감사합니다.
원하는대로 가능합니다.
ShowState
및 HideState
을 정의하는 VisualStateManager
이 필요합니다. 이들은 차례로 가시성을 제어하는 Storyboard
을 정의합니다.
그런 다음 애니메이션은 "ShowState"로 보낼 요소에
VisualStateManager.GoToState(uiElement, "ShowState", true);
를 호출합니다. 상태 이름을 "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
@Anthony - 아마 지금 당신이 그것을 언급하게되지 않습니다. 코드 *는 우리의 응용 프로그램에서 작동하는 것으로 나타나지만 예상 한대로 작동하는지 이중으로 확인하지 않았습니다. – ChrisF
예상대로 희미 해지지 않습니다. BeginTime 및 Duration 속성을 잃고 모든 KeyTime 속성을 1 초로 설정할 수 있습니다. 예상되는 동작을 얻습니다. – AnthonyWJones