ItemsControlのDataTemplateの中にグリッドがあるため、このグリッドのコピーがたくさんあります。グリッドをマウスでクリックして、DataTemplateの外側にある要素のストーリーボードをトリガーします。たとえば、Windowの別の場所にある名前付き要素のTransformプロパティをアニメートしたいとします。WPF:動的に作成されたコントロールのEventTriggerから名前で要素のアニメーションをトリガーする
<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>
とどこかに私の窓で、私はこのようになります四角形があります:
のは私の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のみのソリューションがあれば興味があります。
私はこれにXAMLソリューションが見つかりませんでした。コードビハインドを使用する必要があります。また、ターゲットがグリッドの範囲内にあるべき理由を知りたいと思う。 –