我有一个按钮,它应该是一个包含多个子项的菜单。菜单应该“向下滑动”或类似的东西。我试图使用简单的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>
答案 0 :(得分:1)
不知道你将使用该动画实现什么目标,但你可以这样写:
<DoubleAnimation
Storyboard.TargetProperty="RenderTransform.(TranslateTransform.X)"
To="0" ... />
不幸的是,什么都没有动画! TranslateTransform.X
属性已经为0,因为它的绑定会导致错误。但是,您可以像这样编写TranslateTransform声明:
<TranslateTransform
X="{Binding Path=PlacementTarget.ActualWidth,
RelativeSource={RelativeSource AncestorType=ContextMenu}}" />