2012-12-17 2 views
1

토글 스위치를 수정하여 아이콘을 사용할 수 있습니다. 그런 다음 이미지 정보를 보관하는 사용자 지정 속성을 추가하고 회전했습니다. 내 이미지의 정의는 다음과 같이 다소 같습니다Xaml 변환 기존 변환 유지 영향을받지 않는 변환

<Image x:Name="SwitchKnobActive" Source="{Binding Path=(common:FilterSwitchImageHolder.ActiveImage), RelativeSource={RelativeSource TemplatedParent}}" Width="50" Visibility="{Binding IsOn, RelativeSource={RelativeSource Mode=TemplatedParent}, Converter={StaticResource BoolToVisibilityConverter}, ConverterParameter=True}" RenderTransformOrigin="0.5, 0.5"> 
    <Image.RenderTransform> 
     <TransformGroup> 
      <TranslateTransform x:Name="KnobActiveTranslateTransform"/> 
      <RotateTransform Angle="{Binding Path=(common:FilterSwitchImageHolder.Angle), RelativeSource={RelativeSource TemplatedParent}}" /> 
     </TransformGroup> 
    </Image.RenderTransform> 
</Image> 

을 지금 내가이의 배를 확장 할 이미지를 선택했을 때, 나는이 작업을 수행 할 때이 회전을 풀어. 위와 같이 회전을 다시 설정해 보았지만 무시되었습니다. 기존 변환을 유지할 수있는 방법이 있습니까?


편집 :

클릭 XAML의 변화 :

<VisualState x:Name="Pressed"> 
    <Storyboard> 
     <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="RenderTransform" Storyboard.TargetName="SwitchKnobActive"> 
      <DiscreteObjectKeyFrame KeyTime="0"> 
       <DiscreteObjectKeyFrame.Value > 
        <ScaleTransform ScaleX="2" ScaleY="2"></ScaleTransform> 
       </DiscreteObjectKeyFrame.Value> 
      </DiscreteObjectKeyFrame> 
     </ObjectAnimationUsingKeyFrames> 
    </Storyboard> 
</VisualState> 

참고 :이 모든 코드는 토글 스위치의 컨트롤 템플릿에 있습니다.

+0

행렬 변환을 시도, 그것은 당신이 입력 정말 멋진 – slfan

답변

2

스케일 변환을 어떻게 적용합니까?

일반적인 패턴은 변환 그룹에 더미 스케일 변환을 추가하고 나중에 수정하는 것입니다. 이 방법으로 다른 모든 변환은 대체되지 않습니다.

<Image.RenderTransform> 
    <TransformGroup> 
     <ScaleTransform x:Name="myScaleTransform" ScaleX="1.0" ScaleY="1.0"> 
     <TranslateTransform x:Name="KnobActiveTranslateTransform"/> 
     <RotateTransform Angle="{Binding Path=(common:FilterSwitchImageHolder.Angle), RelativeSource={RelativeSource TemplatedParent}}" /> 
    </TransformGroup> 
</Image.RenderTransform> 

나중에이 같은 XAML 스토리 보드에서 액세스 할 수 있습니다

<DoubleAnimationUsingKeyFrames BeginTime="00:00:00" 
    Storyboard.TargetName="SwitchKnobActive" 
    Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleX)"> 
    <SplineDoubleKeyFrame KeyTime="00:00:00" Value="1"/> 
+0

들으, 난 라인을 추가하지만 이미지 요소에 액세스 할로 나는 시각 상태가 눌려지는 동안 전체 변환 그룹을 바꾸는 것만 같습니까? 직접 transfrom에 액세스하려면 어떻게해야합니까? – Mark

+0

xaml 또는 코드 숨기기에서 사용하고 있습니까? 만약 xaml에서 내 편집을 참조하십시오. –

+0

멋지다 :-) 그룹에 변환이 나열되는 순서가 맞아야 만 그렇지 않으면 배열 액세스 [0]이 실패합니다. – Mark