2
나는이보기 모델을 가지고있다. 애니메이션 엔진은 바인딩 스토리 보드를 고정 할 수 없기 때문에,애니메이션, Image.Source 및 바인딩
<DataTemplate x:Key="MyTemplate">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition />
</Grid.RowDefinitions>
<CheckBox Content="Is flashing" IsChecked="{Binding IsFlashing}"/>
<Image x:Name="MyImage" Grid.Row="1" Source="{Binding Normal}"/>
</Grid>
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding IsFlashing}" Value="True">
<DataTrigger.EnterActions>
<BeginStoryboard>
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="MyImage"
Storyboard.TargetProperty="Source"
RepeatBehavior="Forever">
<DiscreteObjectKeyFrame KeyTime="0:0:0" Value="{Binding Normal}"/>
<DiscreteObjectKeyFrame KeyTime="0:0:1" Value="{Binding Flash}"/>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</BeginStoryboard>
</DataTrigger.EnterActions>
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
이 작동하지 않습니다 입증하기 위해 , 나는 달성하기 위해 노력하고있어, 나는 XAML의 조각을 게시합니다. 다른 방법으로이 작업을 수행 할 수 있습니까?
뷰 모델에서 타이머를 사용하여이를 해결할 수 있지만이 방법은 냄새가 난다.
업데이트 Richard Deeming의 대답에 따르면 데이터 템플릿은이 방법으로 보입니다. 그것은 작동 타이머에 비해, 그것은 확실히 더 나은 :
<DataTemplate x:Key="MyTemplate">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition />
</Grid.RowDefinitions>
<CheckBox Content="Is flashing" IsChecked="{Binding IsFlashing}"/>
<Image x:Name="NormalImage" Grid.Row="1" Source="{Binding Normal}"/>
<Image x:Name="FlashImage" Grid.Row="1" Source="{Binding Flash}" Visibility="Collapsed"/>
</Grid>
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding IsFlashing}" Value="True">
<DataTrigger.EnterActions>
<BeginStoryboard>
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="NormalImage"
Storyboard.TargetProperty="Visibility"
RepeatBehavior="Forever"
Duration="0:0:1">
<DiscreteObjectKeyFrame KeyTime="0:0:0" Value="{x:Static Visibility.Visible}"/>
<DiscreteObjectKeyFrame KeyTime="0:0:0.5" Value="{x:Static Visibility.Collapsed}"/>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</BeginStoryboard>
<BeginStoryboard>
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="FlashImage"
Storyboard.TargetProperty="Visibility"
RepeatBehavior="Forever"
Duration="0:0:1">
<DiscreteObjectKeyFrame KeyTime="0:0:0" Value="{x:Static Visibility.Collapsed}"/>
<DiscreteObjectKeyFrame KeyTime="0:0:0.5" Value="{x:Static Visibility.Visible}"/>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</BeginStoryboard>
</DataTrigger.EnterActions>
<DataTrigger.ExitActions>
<BeginStoryboard>
<Storyboard FillBehavior="Stop">
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="NormalImage"
Storyboard.TargetProperty="Visibility"
Duration="0:0:1">
<DiscreteObjectKeyFrame KeyTime="0:0:0" Value="{x:Static Visibility.Visible}"/>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</BeginStoryboard>
<BeginStoryboard>
<Storyboard FillBehavior="Stop">
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="FlashImage"
Storyboard.TargetProperty="Visibility"
Duration="0:0:1">
<DiscreteObjectKeyFrame KeyTime="0:0:0" Value="{x:Static Visibility.Collapsed}"/>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</BeginStoryboard>
</DataTrigger.ExitActions>
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
좋은 아이디어. 시도해 볼게. – Dennis