2014-07-17 5 views
0

로딩 컨트롤을 사용하면 사용자 컨트롤 상단에 "로드 중"이라고 표시된 사용자 컨트롤이로드 될 때까지 내 프로그램과 상호 작용하지 못하게됩니다.시각적 상태를 사용하여 블렌드의 가시성 전환

시각적 상태를 사용하여 "로드 중"컨트롤의 가시성을 천천히 사라 지도록 축소하고 내 프로그램 내에서 다른 상태로 축소되도록 유지하고 싶습니다. 나는 확장하거나 축소 상태를 트리거 할 때

는 "로드"ContentControl을 표시되고
<VisualStateManager.VisualStateGroups> 
     <VisualStateGroup x:Name="VisualStateGroup"> 
      <VisualStateGroup.Transitions> 
       <VisualTransition GeneratedDuration="0:0:0.5" To="Collapsed"> 
        <VisualTransition.GeneratedEasingFunction> 
         <CubicEase EasingMode="EaseInOut"/> 
        </VisualTransition.GeneratedEasingFunction> 
       </VisualTransition> 
       <VisualTransition GeneratedDuration="0:0:0.5" To="Expanded"> 
        <VisualTransition.GeneratedEasingFunction> 
         <CubicEase EasingMode="EaseInOut"/> 
        </VisualTransition.GeneratedEasingFunction> 
       </VisualTransition> 
       <VisualTransition GeneratedDuration="0:0:0.5" To="Loaded"> 
        <VisualTransition.GeneratedEasingFunction> 
         <CubicEase EasingMode="EaseInOut"/> 
        </VisualTransition.GeneratedEasingFunction> 
       </VisualTransition> 
      </VisualStateGroup.Transitions> 
      <VisualState x:Name="Expanded"> 
       <Storyboard> 
        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="contentControl"> 
         <DiscreteObjectKeyFrame KeyTime="0" Value="{x:Static Visibility.Collapsed}"/> 
        </ObjectAnimationUsingKeyFrames> 
       </Storyboard> 
      </VisualState> 
      <VisualState x:Name="Collapsed"> 
       <Storyboard> 
        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(FrameworkElement.Width)" Storyboard.TargetName="metaGrid"> 
         <EasingDoubleKeyFrame KeyTime="0" Value="0"/> 
        </DoubleAnimationUsingKeyFrames> 
        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="contentControl"> 
         <DiscreteObjectKeyFrame KeyTime="0" Value="{x:Static Visibility.Collapsed}"/> 
        </ObjectAnimationUsingKeyFrames> 
       </Storyboard> 
      </VisualState> 
      <VisualState x:Name="Loaded"> 
       <Storyboard> 
        <BooleanAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.IsHitTestVisible)" Storyboard.TargetName="contentControl"> 
         <DiscreteBooleanKeyFrame KeyTime="0" Value="False"/> 
        </BooleanAnimationUsingKeyFrames> 
        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="contentControl"> 
         <EasingDoubleKeyFrame KeyTime="0" Value="0"/> 
        </DoubleAnimationUsingKeyFrames> 
       </Storyboard> 
      </VisualState> 
     </VisualStateGroup> 
    </VisualStateManager.VisualStateGroups> 

지금이 가진 문제가 있음 : 어디

<ContentControl x:Name="contentControl" Content="{StaticResource loadingAnimation}"> 
     <i:Interaction.Triggers> 
      <ei:DataTrigger Value="false" Binding="{Binding IsLoadingAnimationVisible}"> 
       <ei:GoToStateAction StateName="Loaded"/> 
      </ei:DataTrigger> 
     </i:Interaction.Triggers> 
    </ContentControl> 

:

나는 현재 나의 부하 제어 할 수 있습니다 0.5 초 이상 지나면 사라집니다. 로드 된 상태가 트리거되면 어떻게로드 컨트롤이 축소되도록 영구적으로 설정할 수 있습니까?

편집

나는 (즉, 설정이 혼합의 가시성을 전환하는 올바른 방법입니다 확실하지 않다 ishittestvisible = 거짓과 opacitiy = 0하지만 내가 visibility.collapsed 설정으로 생각할 수있는 유일한 방법이었다 didnt는 전환 할 것 같았습니다. 쓰러 질 것입니다.)

+0

어떻게 * 천천히 * Collapsed와 같은 개별적인 가시성 값을 * 퇴색 시키시겠습니까? 이것은 불연속 값이므로'Collapsed'이거나 그렇지 않습니다. – Sheridan

+0

나는 Visibility.Visible하지만 Height = 0 인 요소가 "Visible"이 아닌 예를 들어 C#의 감각이 아닌 영어의 의미에서 Visiblity라는 단어를 사용합니다. – user1

답변

0

Timeline.BeginTime Property을 사용하려는 것 같습니다. 이 속성을 사용하면 Visibility.Collapsed Animation의 시작을 지연시킬 수 있습니다. 이상적으로는 DoubleAnimationUsingKeyFrames 개체에도 Duration 속성을 설정해야합니다. 이것을 시도하십시오 :

<VisualState x:Name="Collapsed"> 
    <Storyboard> 
     <DoubleAnimationUsingKeyFrames Duration="0:0:5" Storyboard.TargetProperty="(FrameworkElement.Width)" Storyboard.TargetName="metaGrid"> 
      <EasingDoubleKeyFrame KeyTime="0" Value="0"/> 
     </DoubleAnimationUsingKeyFrames> 
     <ObjectAnimationUsingKeyFrames BeginTime="0:0:5" Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="contentControl"> 
      <DiscreteObjectKeyFrame KeyTime="0" Value="{x:Static Visibility.Collapsed}"/> 
     </ObjectAnimationUsingKeyFrames> 
    </Storyboard> 
</VisualState>