gpt4 book ai didi

.net - WPF:在动态创建的控件上按名称从 EventTrigger 触发元素上的动画

转载 作者:行者123 更新时间:2023-12-01 12:55:44 30 4
gpt4 key购买 nike

我在 ItemsControl 的 DataTemplate 中有一个 Grid,所以这个网格会有很多副本。我想在网格上单击鼠标以触发 DataTemplate 之外的元素的 Storyboard 。例如,我想为 Window 中其他地方存在的命名元素的 Transform 属性设置动画。

假设我的 DataTemplate 看起来像这样:

    <DataTemplate x:Key="myDataTemplate">
<Grid>
<Grid.Triggers>
<EventTrigger RoutedEvent="UIElement.MouseLeftButtonUp">
<BeginStoryboard>
<Storyboard Storyboard.TargetName="myRectangle">
<DoubleAnimation Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[1].(TranslateTransform.X)"
To="10" Duration="0:0:0.2" />
<DoubleAnimation Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[1].(TranslateTransform.Y)"
To="10" Duration="0:0:0.2" />
<DoubleAnimation Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleX)"
To="1" Duration="0:0:0.5" />
<DoubleAnimation Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleY)"
BeginTime="0:0:0.5" To="1" Duration="0:0:0.5" />
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Grid.Triggers>
</Grid>
</DataTemplate>

在我窗口的某个地方,我有一个看起来像这样的矩形:
    <Rectangle x:Name="myRectangle" Height="400" Width="400">
<Rectangle.RenderTransform>
<TransformGroup>
<ScaleTransform ScaleX="0" ScaleY="0" />
<TranslateTransform />
</TransformGroup>
</Rectangle.RenderTransform>
</Rectangle>

当 MouseLeftButtonUp 事件触发时,我得到以下异常:

在“System.Windows.Controls.Grid”的名称范围内找不到“myRectangle”名称。

有没有办法告诉 Storyboard在哪里寻找这个名字的元素?我对仅 xaml 的解决方案(如果存在)特别感兴趣。

最佳答案

只要您尝试绑定(bind)的 xaml 元素是父元素,就可以使用 RelativeSource 绑定(bind)的 FindAncestor 模式在不同的名称范围(即数据模板的外部)中查找 xaml 元素。绑定(bind)代码如下所示:

{Binding Path="myRectangle", RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Rectangle}}}

Storyboard中的名称绑定(bind)可能完全是另一种动物,但也许您可以使用它。

关于.net - WPF:在动态创建的控件上按名称从 EventTrigger 触发元素上的动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/853577/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com