2012-12-17 109 views
1

我修改了一個切換開關,因此我可以使用它的圖標ontop。然後我添加了一個自定義屬性,它保存圖像信息和旋轉。我的形象的定義看起來有點像這樣: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> 

FYI:所有這些代碼是一個切換開關的控制模板內。

+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

THX對您輸入的,我說行,但我做訪問圖像元素我想我只是在視覺狀態下按下來替換整個變換組?我怎樣才能直接訪問一個transfrom? – Mark

+0

你是從xaml還是代碼背後做的?如果從XAML然後看到我的編輯。 –

+0

很酷的工作:-)雖然我必須注意,組中列出的轉換的順序必須是正確的,否則數組訪問[0]將失敗。 – Mark