ItemsControl の DataTemplate 内に Grid があるため、このグリッドのコピーが多数存在します。グリッドをマウスでクリックして、DataTemplate の外側の要素のストーリーボードをトリガーしたい。たとえば、ウィンドウ内の別の場所に存在する名前付き要素の 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 があります。
<Rectangle x:Name="myRectangle" Height="400" Width="400">
<Rectangle.RenderTransform>
<TransformGroup>
<ScaleTransform ScaleX="0" ScaleY="0" />
<TranslateTransform />
</TransformGroup>
</Rectangle.RenderTransform>
</Rectangle>
MouseLeftButtonUp イベントが発生すると、次の例外が発生します。
'myRectangle' 名が 'System.Windows.Controls.Grid' の名前スコープで見つかりません。
この名前で要素を探す場所をストーリーボードに伝える方法はありますか? xaml のみのソリューションが存在する場合、特に興味があります。