【问题标题】:Animate simple ContextMenu动画简单的 ContextMenu
【发布时间】:2012-05-07 12:56:59
【问题描述】:

我有一个按钮,它应该是一个包含多个子项的菜单。菜单应该“向下滑动”或类似的东西。我正在尝试使用简单的 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>

【问题讨论】:

    标签: .net wpf xaml


    【解决方案1】:

    不知道你到底要用那个动画实现什么,但你可以这样写:

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

    不幸的是,没有任何动画! TranslateTransform.X 属性已经为 0,因为它的绑定会导致错误。但是,您可以像这样编写您的 TranslateTransform 声明:

    <TranslateTransform 
        X="{Binding Path=PlacementTarget.ActualWidth,
            RelativeSource={RelativeSource AncestorType=ContextMenu}}" />
    

    【讨论】:

    • 基本上,在显示菜单时我需要任何动态动画。
    • 我的问题可能不够清楚。如您所见,我的问题是找不到"translateTransform" 项目。您关于更改绑定的建议不会影响我遇到的异常。
    • 那么按照我的建议更改Storyboard.TargetProperty 怎么样?
    • 啊哈!我看到你的编辑。是的,这可能会奏效。让我检查一下。
    • 我可以看到动画。 (不是我应该看到的,但我会自己解决。)谢谢。
    猜你喜欢
    • 2014-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-26
    • 2012-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多