c# - 将元素指定为控件模板中的动画目标

标签 c# wpf xaml animation binding

我正在尝试为 ContentTemplate 内的一个控件设置事件触发器,当我将 Storyboard TargetName 设置为“ContentPopup”时,我正在使用 Storyboard和与 DoubleAnimationUsingKeyFrames 嵌套的 DoubleAnimation “这是我在下面保存的网格,但我收到一个错误告诉我:

名称“ContentPopup”不在命名空间“System.Windows.Controls.Grid”中。

控件模板上的动画代码为:

<Grid Margin="0" Width="55" Height="40">
    <Grid.Triggers>
        <EventTrigger RoutedEvent="m:Pushpin.MouseDown">
            <BeginStoryboard>
                <Storyboard>
                    <DoubleAnimation Duration="00:00:00.5000000" Storyboard.TargetName="ContentPopup" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleX)" To="1">
                    ...
                </Storyboard>
            </BeginStoryboard>
        </EventTrigger>
    </Grid.Triggers>
    ...
</Grid>

我需要设置动画的网格上的代码是:

<Grid Name="ContentPopup"
      Background="White"
      Opacity="0.85"
      RenderTransformOrigin="0,0">
    <Grid.RenderTransform>
        <TransformGroup>
            <ScaleTransform ScaleX="0" ScaleY="0"/>
            <SkewTransform/>
            <RotateTransform/>
            <TranslateTransform/>
        </TransformGroup>
     </Grid.RenderTransform>
    ...
 </Grid>

MSDN 表示,需要执行以下操作才能使对象可定位

msdn help

网格是一个 FrameworkElement,我希望动画在我使用此控件模板在主窗口上调用的每个控件上运行,它们很多,所以我需要使用该模板。 问题是:

有没有办法将元素指定为模板中的目标?

最佳答案

所以我找到了正确的方法来做到这一点,即使网格是一个FrameworkElement,你也无法从控件模板访问它,所以你需要在中提供一些绑定(bind)或XAML引用为了工作,所以使用相同的代码,而不是使用带有值的 Storyboard.TargetStoryboard.TargetName 属性:

Storyboard.Target="{Binding ElementName=ContentPopup}"

或者也:

Storyboard.Target="{x:Reference Name=ContentPopup}"

这对我有用

关于c# - 将元素指定为控件模板中的动画目标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21531680/

相关文章:

c# - 数据绑定(bind)到 ComboBox 中的 CollectionViewSource 时如何保留 CurrentItem 的双向绑定(bind)

c# - xaml DataGrid 绑定(bind)到字典中的字典中的字典

c# - 以下 LINQ 语句如何工作?

wpf - Visual Studio 2012 XAML设计器无效标记

带有验证的 WPF 文本框丢失 ErrorTemplate

c# - 洪水填充算法导致堆栈溢出

c# - 我如何添加自定义属性,如 x :Name ="value"?

wpf - XAML 中从形状到路径的转换

c# - 值不能为 null 或空。参数名称 linkText

c# - 不支持文化