0

ボタンがあります。これは、いくつかのサブアイテムを含むメニューにする必要があります。メニューは「スライドダウン」またはそのようなものでなければなりません。単純な TranslateTransform を使用してこれを達成しようとしていますが、常に次のランタイム エラーが発生します。System.InvalidOperationException: 'translateTransform' name cannot be found in the name scope of 'System.Windows.Controls.ContextMenu'.

原因は何ですか?それを修正する方法はありますか?メニュー アニメーション アプローチに代わる (無料の) 方法はありますか?

        <Button Name="Settings" Margin="2" Style="{StaticResource GrayGrayButtonStyle}">
            <Image Source="gear.png" />
            <Button.ContextMenu>
                <ContextMenu>
                    <MenuItem Header="Item 0"/>
                    <MenuItem Header="Item 1"/>
                    <MenuItem Header="Item 2"/>
                    <MenuItem Header="Item 3"/>
                    <ContextMenu.RenderTransform>
                        <TranslateTransform x:Name="translateTransform"
                            X="{Binding 
                                Path=ActualWidth, 
                                RelativeSource={RelativeSource 
                                                FindAncestor,
                                                AncestorType={x:Type Button}}}" />
                    </ContextMenu.RenderTransform>
                    <ContextMenu.Triggers>
                        <EventTrigger RoutedEvent="ContextMenu.Loaded">
                            <EventTrigger.Actions>
                                <BeginStoryboard>
                                    <Storyboard>
                                        <DoubleAnimation Storyboard.TargetName="translateTransform"
                                         Storyboard.TargetProperty="(TranslateTransform.X)"
                                         To="0"
                                         BeginTime="0:0:3.5"
                                         AutoReverse="False"
                                         Duration="0:0:2.5" />
                                    </Storyboard>
                                </BeginStoryboard>
                            </EventTrigger.Actions>
                        </EventTrigger>
                    </ContextMenu.Triggers>
                </ContextMenu>
            </Button.ContextMenu>
        </Button>
4

1 に答える 1

1

そのアニメーションで何を達成しようとしているのか正確にはわかりませんが、次のように書くことができます。

<DoubleAnimation
    Storyboard.TargetProperty="RenderTransform.(TranslateTransform.X)"
    To="0" ... />

残念ながら、何もアニメーション化されません!TranslateTransform.Xバインディングによってエラーが発生するため、プロパティはすでに0になっています。ただし、TranslateTransform宣言は次のように記述できます。

<TranslateTransform 
    X="{Binding Path=PlacementTarget.ActualWidth,
        RelativeSource={RelativeSource AncestorType=ContextMenu}}" />
于 2012-05-07T14:15:38.810 に答える