1

XAML でボタンの ControlTemplate を作成しようとしています。Triggers コレクションでは、RotateTransform を使用してボタンの 1 つの要素を回転させたいと考えています。これは後でアニメーション化されます (簡単にするためにアニメーションをオフにしました)。これを行うには、ボタンの要素に関連付けられた回転変換の Angle プロパティを参照する必要があります。そして、これが問題です。それを参照する方法が見つからないようです。コードは次のとおりです。

<ControlTemplate x:Key="myButtonTemplate"
                 TargetType="Button">
    <Grid>
        <Ellipse x:Name="OuterCircle"
                 RenderTransformOrigin="0.5, 0.5">
            <Ellipse.Fill>
                <RadialGradientBrush Center="0.7,0.7">
                    <GradientStop Offset="0.9" Color="DarkBlue"/>
                    <GradientStop Offset="0.2" Color="White"/>
                </RadialGradientBrush>
            </Ellipse.Fill>
            <Ellipse.RenderTransform>
                <RotateTransform x:Name="myTransform" Angle="0"/>
            </Ellipse.RenderTransform>
        </Ellipse>
        <Ellipse x:Name="InnerCircle"
                 RenderTransformOrigin="0.5, 0.5"
                 Stroke="DarkBlue"
                 >
            <Ellipse.Fill>
                <RadialGradientBrush Center="0.35,0.35"
                                     RadiusX="0.7"
                                     RadiusY="0.7">
                    <GradientStop Offset="0.05" Color="#70B0FF"/>
                    <GradientStop Offset="0.9" Color="DarkBlue"/>
                </RadialGradientBrush>
            </Ellipse.Fill>
            <Ellipse.RenderTransform>
                <ScaleTransform ScaleX="0.8" ScaleY="0.8"/>
            </Ellipse.RenderTransform>
        </Ellipse>
        <Viewbox Margin="10">
            <ContentPresenter Margin="{TemplateBinding Padding}"/>
        </Viewbox>
    </Grid>

    <ControlTemplate.Triggers>
        <Trigger Property="IsMouseOver" Value="True">
            <Setter TargetName="myTransform" Property="Angle" Value="90"/>
        </Trigger>
    </ControlTemplate.Triggers>

</ControlTemplate>

RotateTransform に x:Name="myTransform" という名前を付け、それを Setter の TargetName として使用して参照しようとしました。これはうまくいきませんでした。試した他のことは、 のような「ドットダウン」TargetName="OuterCircle.RenderTransofrm.RotateTransform"でした。喜びもありません。

これは簡単なはずですが、おそらくそうです。誰かが私を正しい方向に向けることができますか?

ありがとう、クリス。

4

1 に答える 1

0

実際にmyTransform設定するとアクセスできますStoryboard.TargetName

<ControlTemplate.Triggers>
    <EventTrigger RoutedEvent="MouseEnter">
        <BeginStoryboard>
            <Storyboard>
                <DoubleAnimation Storyboard.TargetName="myTransform"
                                 Storyboard.TargetProperty="Angle"
                                 To="90" Duration="0:0:0.1"/>
            </Storyboard>
        </BeginStoryboard>
    </EventTrigger>
    <EventTrigger RoutedEvent="MouseLeave">
        <BeginStoryboard>
            <Storyboard>
                <DoubleAnimation Storyboard.TargetName="myTransform"
                                 Storyboard.TargetProperty="Angle"
                                 To="0" Duration="0:0:0.1"/>
            </Storyboard>
        </BeginStoryboard>
    </EventTrigger>
</ControlTemplate.Triggers>
于 2013-06-24T11:32:40.170 に答える