C# 如何使属性值闪烁?

C# 如何使属性值闪烁?,c#,wpf,C#,Wpf,我有一个名为ResultChanged的属性,它绑定了DataGrid项,当值为true时,应用于DataGridCell的样式将使单元格上色,因此,我需要将数据网格设置的单元格闪烁为ResultChanged值的5倍,使其为true和false,这是我的xaml设计: <DataGridTextColumn Header="{DynamicResource hour}" Binding="{Binding Result}"> <DataGridTextColumn.Cell

我有一个名为
ResultChanged
的属性,它绑定了
DataGrid
项,当值为
true
时,应用于
DataGridCell
样式将使
单元格上色,因此,我需要将
数据网格
设置的
单元格
闪烁为
ResultChanged
值的5倍,使其为true和false,这是我的xaml设计:

<DataGridTextColumn Header="{DynamicResource hour}" Binding="{Binding Result}">
 <DataGridTextColumn.CellStyle>
  <Style TargetType="{x:Type DataGridCell}" BasedOn="{StaticResource MaterialDesignDataGridCell}">
    <Style.Triggers>
      <DataTrigger Binding="{Binding ResultChanged}" Value="True">
        <Setter Property="Background" Value="Orange" />
        <Setter Property="Foreground" Value="Black" />
      </DataTrigger>
    <Style.Triggers>
  </Style>
</DataGridTextColumn.CellStyle>

问题是
单元格总是彩色的,我看不到任何闪烁,有什么想法吗?

你能为你的
DataGridCell
试试这种样式吗

<DataGridTextColumn Header="{DynamicResource hour}" Binding="{Binding Result}">
    <DataGridTextColumn.CellStyle>
      <Style TargetType="{x:Type DataGridCell}" BasedOn="{StaticResource MaterialDesignDataGridCell}">
        <Style.Triggers>
            <DataTrigger Binding="{Binding ResultChanged}" Value="True" >
                <DataTrigger.EnterActions>
                    <BeginStoryboard>
                        <Storyboard x:Name="Blink" 
                                    AutoReverse="True" 
                                    RepeatBehavior="5x">
                            <ColorAnimationUsingKeyFrames BeginTime="00:00:00"
                                Storyboard.TargetProperty="(Background).(SolidColorBrush.Color)">
                                <EasingColorKeyFrame KeyTime="00:00:01" 
                                                     Value="Orange" />
                            </ColorAnimationUsingKeyFrames>
                            <ColorAnimationUsingKeyFrames 
                                BeginTime="00:00:00"
                                Storyboard.TargetProperty="(Foreground).(SolidColorBrush.Color)">
                                <EasingColorKeyFrame KeyTime="00:00:01" 
                                                     Value="Black" />
                            </ColorAnimationUsingKeyFrames>
                        </Storyboard>
                    </BeginStoryboard>
                </DataTrigger.EnterActions>
            </DataTrigger>
        </Style.Triggers>
      </Style>
    </DataGridTextColumn.CellStyle>
</DataGridTextColumn>

您可以根据自己的动画偏好播放
自动翻转
开始时间

您可以使用一个,而不必费劲实现自己的计时系统。在UI应用程序中(或至少在UI线程中)不应该有两件事是
while(true)
thread.Sleep
。感谢各位的宝贵提示,dhilmatty的答案是一个完美的解决方案,请你也检查一下我的问题:哇,惊人的效果,但我想问你:眨眼结束后我能保持橙色吗?例如:闪烁开始,因为结果更改为true,并且在闪烁五次后,橙色仍保留在单元格上,这可能吗?你能告诉我怎么做吗?我真的很喜欢这个,thanksI在这个实现中发现了一个bug,如果我点击一行datagrid,橙色效果就会消失,你能确认吗?我怎样才能解决这个问题?谢谢
<DataGridTextColumn Header="{DynamicResource hour}" Binding="{Binding Result}">
    <DataGridTextColumn.CellStyle>
      <Style TargetType="{x:Type DataGridCell}" BasedOn="{StaticResource MaterialDesignDataGridCell}">
        <Style.Triggers>
            <DataTrigger Binding="{Binding ResultChanged}" Value="True" >
                <DataTrigger.EnterActions>
                    <BeginStoryboard>
                        <Storyboard x:Name="Blink" 
                                    AutoReverse="True" 
                                    RepeatBehavior="5x">
                            <ColorAnimationUsingKeyFrames BeginTime="00:00:00"
                                Storyboard.TargetProperty="(Background).(SolidColorBrush.Color)">
                                <EasingColorKeyFrame KeyTime="00:00:01" 
                                                     Value="Orange" />
                            </ColorAnimationUsingKeyFrames>
                            <ColorAnimationUsingKeyFrames 
                                BeginTime="00:00:00"
                                Storyboard.TargetProperty="(Foreground).(SolidColorBrush.Color)">
                                <EasingColorKeyFrame KeyTime="00:00:01" 
                                                     Value="Black" />
                            </ColorAnimationUsingKeyFrames>
                        </Storyboard>
                    </BeginStoryboard>
                </DataTrigger.EnterActions>
            </DataTrigger>
        </Style.Triggers>
      </Style>
    </DataGridTextColumn.CellStyle>
</DataGridTextColumn>
<DataGridTextColumn Header="{DynamicResource hour}" Binding="{Binding Result}">
    <DataGridTextColumn.CellStyle>
      <Style TargetType="{x:Type DataGridCell}" BasedOn="{StaticResource MaterialDesignDataGridCell}">
        <Style.Triggers>
            <DataTrigger Binding="{Binding ResultChanged}" Value="True" >
                <DataTrigger.EnterActions>
                    <BeginStoryboard>
                        <Storyboard>
                            <Storyboard x:Name="Blink" 
                                        AutoReverse="True" 
                                        RepeatBehavior="5x">
                                <ColorAnimationUsingKeyFrames BeginTime="00:00:00"
                                    Storyboard.TargetProperty="(Background).(SolidColorBrush.Color)">
                                    <EasingColorKeyFrame KeyTime="00:00:01" 
                                                         Value="Orange" />
                                </ColorAnimationUsingKeyFrames>
                                <ColorAnimationUsingKeyFrames 
                                    BeginTime="00:00:00"
                                    Storyboard.TargetProperty="(Foreground).(SolidColorBrush.Color)">
                                    <EasingColorKeyFrame KeyTime="00:00:01" 
                                                         Value="Black" />
                                </ColorAnimationUsingKeyFrames>
                            </Storyboard>
                            <Storyboard AutoReverse="False">
                                <ColorAnimationUsingKeyFrames BeginTime="00:00:10" Storyboard.TargetProperty="(Background).(SolidColorBrush.Color)">
                                    <EasingColorKeyFrame KeyTime="00:00:01" Value="Orange" />
                                </ColorAnimationUsingKeyFrames>
                            </Storyboard>
                        </Storyboard>
                    </BeginStoryboard>
                </DataTrigger.EnterActions>
            </DataTrigger>
        </Style.Triggers>
      </Style>
    </DataGridTextColumn.CellStyle>
</DataGridTextColumn>