我在 ItemsControl 的 DataTemplate 中有一个 Grid,所以这个网格会有很多副本。我想在网格上单击鼠标以触发 DataTemplate 之外的元素的情节提要。例如,我想为 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”名称。
有没有办法告诉故事板在哪里寻找这个名字的元素?我对仅 xaml 的解决方案(如果存在)特别感兴趣。