0

LastDataUpdateフィールドが変更されたときに長方形のアニメーションをトリガーする次のXAMLコードがあります。LastDataUpdateは、INotifyPropertyChangedを実装するクラス内のDateTimeです。LastDataUpdate == DateTime.MinValueの場合、アニメーションを実行しないようにします。これをXAMLに実装する方法はありますか?

<Rectangle x:Name="NewDataAnimation" Tag="{Binding Path=LastDataUpdate, NotifyOnTargetUpdated=True}" Opacity="0" Width="5" Height="5" Fill="LawnGreen" HorizontalAlignment="Left" VerticalAlignment="Top">
<Rectangle.Style>
  <Style>
    <Style.Triggers>
      <EventTrigger RoutedEvent="Binding.TargetUpdated">
        <EventTrigger.Actions>
          <BeginStoryboard>
            <Storyboard>
              <DoubleAnimation Storyboard.TargetProperty="Opacity" Duration="0:0:0" To="1.0" />
              <DoubleAnimation Storyboard.TargetProperty="Opacity" Duration="0:0:4" From="1.0" To="0.0" BeginTime="0:0:2" />
            </Storyboard>
          </BeginStoryboard>
        </EventTrigger.Actions>
      </EventTrigger>
    </Style.Triggers>
  </Style>
</Rectangle.Style>

アンドリュー

4

1 に答える 1

0

プロパティ自体でトリガーし、アニメーションを実行するかどうかをコンバーターに決定させないのはなぜですか?

以下の XAML では、不要な値に対して LastDataUpdate を評価するコンバーターを作成することを前提としています。LastDataUpdate を DateTime.MinValue に設定すると、アニメーションは開始されません。変更を加えるとすぐに、バインディングは PropertyChanged を介して強制的に再評価され、コンバーターが意思決定を行うことができます...

<Rectangle Opacity="0" Width="5" Height="5" Fill="LawnGreen" HorizontalAlignment="Left" VerticalAlignment="Top">
    <Rectangle.Style>
        <Style>
            <Style.Triggers>
                <Trigger Property="{Binding LastDataUpdate, Converter={StaticResource LastDataUpdateToDoAnimation}}" Value="True" >
                    <Trigger.EnterActions>
                        <BeginStoryboard>
                            <Storyboard>
                                <DoubleAnimation Storyboard.TargetProperty="Opacity" Duration="0:0:0" To="1.0" />
                                <DoubleAnimation Storyboard.TargetProperty="Opacity" Duration="0:0:4" From="1.0" To="0.0" BeginTime="0:0:2" />
                            </Storyboard>
                        </BeginStoryboard>
                    </Trigger.EnterActions>
                </Trigger>
            </Style.Triggers>
        </Style>
    </Rectangle.Style>
</Rectangle>
于 2012-04-09T23:00:05.703 に答える