2012-05-25 2 views
0

에 대한 전환 없음, 사용자 정의 컨트롤을 만들고 Visual States incl를 추가했습니다. 전환. 상태 변경이 처음 실행될 때 전환이없고 한 상태에서 다른 상태로 급속한 변경 만이 있습니다 (전환이 전혀없는 것처럼). 다음의 모든 상태 변경은 예상대로 전환을 실행합니다. 생성자에서 초기 상태를 설정하려고 시도했지만 도움이되지 않습니다. 아무도, 왜 처음에는 전환이 없다는 것을 알고 있습니까? 여기 VisualStates : Silverlight 4 응용 프로그램에서 첫 번째 상태 변경

내 사용자 지정 컨트롤에서 일부 코드 :

[TemplateVisualState(GroupName="CommonState", Name="Expand")] 
[TemplateVisualState(GroupName="CommonState", Name="Collapse")] 
public class CollapsibleContainer : ContentControl 
{ 
    public CollapsibleContainer() 
    { 
    this.DefaultStyleKey = typeof(CollapsibleContainer); 
    VisualStateManager.GoToState(this, "Expand", false); 
    } 

    private void BorderHeader_Click(object sender, MouseButtonEventArgs args) 
    { 
    if (_contentPresenter.Visibility == Visibility.Collapsed) 
    { 
     _contentPresenter.Visibility = Visibility.Visible; 
     VisualStateManager.GoToState(this, "Expand", true); 
    } 
    else 
    { 
     _contentPresenter.Visibility = Visibility.Collapsed; 
     VisualStateManager.GoToState(this, "Collapse", true); 
    } 
    } 
} 

그리고 여기에 시각적 상태에 대한 정의입니다 :

<VisualStateManager.VisualStateGroups> 
    <VisualStateGroup x:Name="CommonState"> 
    <VisualState x:Name="Expand" /> 
    <VisualState x:Name="Collapse"> 
     <Storyboard> 
     <DoubleAnimation Duration="0" To="180" Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.Rotation)" Storyboard.TargetName="ImageArrowNormal" d:IsOptimized="True"/>           
     <DoubleAnimation Duration="0" To="180" Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.Rotation)" Storyboard.TargetName="ImageArrowHover" d:IsOptimized="True"/> 
     </Storyboard> 
    </VisualState> 

    <VisualStateGroup.Transitions> 
     <VisualTransition x:Name="Expand2Collapse" From="Expand" To="Collapse"> 
     <Storyboard> 
      <DoubleAnimation Duration="0:0:0.3" To="180" Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.Rotation)" Storyboard.TargetName="ImageArrowNormal"/> 
      <DoubleAnimation Duration="0:0:0.3" To="180" Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.Rotation)" Storyboard.TargetName="ImageArrowHover"/> 
     </Storyboard> 
     </VisualTransition> 

     <VisualTransition x:Name="Collapse2Expand" From="Collapse" To="Expand"> 
     <Storyboard> 
      <DoubleAnimation Duration="0:0:0.3" Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.Rotation)" Storyboard.TargetName="ImageArrowNormal"/> 
      <DoubleAnimation Duration="0:0:0.3" Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.Rotation)" Storyboard.TargetName="ImageArrowHover"/> 
     </Storyboard> 
     </VisualTransition> 
    </VisualStateGroup.Transitions> 
    </VisualStateGroup> 
</VisualStateManager.VisualStateGroups> 

답변

1

가에서 ApplyTemplate 아닌 생성자 내부의 초기 상태를 설정하십시오.

+0

바로! 많은 감사합니다! – Aaginor

관련 문제