5

モジュールの 1 つで、次のスタイルが設定されているのを見ました。

<Style TargetType="Rectangle">
            <Style.Triggers>
                <EventTrigger RoutedEvent="MouseEnter">
                    <BeginStoryboard>
                        <Storyboard>
                            <DoubleAnimation To="300" Duration="0:0:1.5" 
                    AccelerationRatio="0.10" DecelerationRatio="0.25" 
                    Storyboard.TargetProperty="(Canvas.Width)" />
                        </Storyboard>
                    </BeginStoryboard>
                </EventTrigger>
            </Style.Triggers>
        </Style>

TargetTypeあることに注意してください。スタイル/トリガーはまだ正しく機能しています。プロパティをアニメーション化しています。RectangleStoryboard.TargetPropertyCanvas.WidthRectangle.width

Storyboard.TargetProperty (または XAML の他の場所) では、PropertyPath 構文を使用する必要があることを理解しています(ownerType.PropertyName)

私の質問は、アニメーションをオンに設定するとどのようにCanvas.Widthアニメーション化されるかですRectangle.Width

  1. Canvas.Width、Rectangle.Width、または FrameworkElement.Width がすべて FrameowrkElement.Width プロパティを指しているためでしょうか。Width は FrameworkElement で定義されており、Canvas/Rectangle はそこから派生しています。
  2. それとも、継承により、Canvas と Rectangle の両方が依存関係プロパティの所有者にもなるためでしょうか。
4

2 に答える 2

0

Width Propertyは Class のPropertyであるため、から継承FrameworkElementする every を入力できますControlFrameworkElement

Storyboard.TargetProperty="(FrameworkElement.Width)"

しかし、私のお気に入りは次のとおりです。

Storyboard.TargetProperty="(DataGrid.Width)"

それを試してみてください。それが動作します!

于 2013-05-29T12:18:39.890 に答える