1

トグル スイッチを変更して、その上にアイコンを使用できるようにしました。次に、画像情報と回転を保持するカスタム プロパティを追加しました。私のイメージの定義は、次のようになります。

<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>

画像を選択すると、2倍に拡大縮小したいのですが、これを行うと回転が失われます。上記のように回転を再度設定しようとしましたが、無視されました..既存の変換を維持する方法はありますか?


編集:

クリック 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>

参考: このコードはすべて、トグル スイッチのコントロール テンプレート内にあります。

4

1 に答える 1

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"/>
于 2012-12-17T14:19:12.013 に答える