2012-04-09 11 views
0

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

<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> 

アンドリュー

答えて

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> 
+0

私はXAMLでそれを仕事と使用しないようにしようとしていましたコンバータ。しかし、私はあなたが正しいと確信して、コンバータを使用して最良の方法です。ありがとう。 –

関連する問題