Я определил две анимации в шаблоне данных для ячейки сетки.
<DataTemplate.Resources>
<Storyboard x:Key="ShowMenuStory">
<BooleanAnimationUsingKeyFrames Storyboard.TargetName="PART_Menu" Storyboard.TargetProperty="IsOpen">
<!-- in two seconds the popup is opened -->
<DiscreteBooleanKeyFrame Value="True" KeyTime="0:0:2.0" />
</BooleanAnimationUsingKeyFrames>
</Storyboard>
<Storyboard x:Key="HideMenuStory">
<BooleanAnimationUsingKeyFrames Storyboard.TargetName="PART_Menu" Storyboard.TargetProperty="IsOpen">
<!-- immediately poup is closed -->
<DiscreteBooleanKeyFrame Value="False" KeyTime="0:0:0.1" />
</BooleanAnimationUsingKeyFrames>
</Storyboard>
</DataTemplate.Resources>
В DataTemplate.Triggers попробуйте управлять моими раскадровками так:
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding IsFocused, ElementName=PART_Editor}" Value="True">
<DataTrigger.EnterActions>
<StopStoryboard BeginStoryboardName="HideStory" />
<BeginStoryboard Name="ShowStory" Storyboard="{StaticResource ShowMenuStory}" />
</DataTrigger.EnterActions>
<DataTrigger.ExitActions>
<StopStoryboard BeginStoryboardName="ShowStory" />
<BeginStoryboard Name="HideStory" Storyboard="{StaticResource HideMenuStory}" />
</DataTrigger.ExitActions>
</DataTrigger>
</DataTemplate.Triggers>
Проблема в том, что когда я фокусирую ячейку, сначала пытаюсь остановить анимацию (HideStory), которая еще не была выполнена. Это приводит к следующему предупреждению:
System.Windows.Media.Animation Предупреждение: 6: невозможно выполнить действие, так как указанная раскадровка никогда не применялась к этому объекту для интерактивного управления.; Действие='Удалить'; ...
Знаете ли вы, как я могу избежать этого предупреждения в xaml? Спасибо