2017-09-19 8 views
1

後、私はWPFアプリケーションで、次のような状況を持っている:バックブール型プロパティをリセットXAMLアニメーション

  • 私は新しいアイテムや編集のものすることができ、ソケットからプッシュされ、いくつかのデータをしました。

  • アイテムが更新されると、私は点滅する行を持ってきた、これは実際にはboolean型プロパティを使用して行われるが、私は、次のDataTrigger

    <Style TargetType="{x:Type telerik:GridViewCell}" x:Key="Style"> 
    <Style.Triggers> 
        <DataTrigger Binding="{Binding IsChanged}" Value="True"> 
         <DataTrigger.EnterActions> 
          <RemoveStoryboard BeginStoryboardName="Highlight" /> 
          <BeginStoryboard Name="Highlight"> 
           <Storyboard> 
            <ColorAnimation Duration="00:00:03" From="Red" FillBehavior="Stop" Storyboard.TargetProperty="(Control.Background).(SolidColorBrush.Color)" /> 
           </Storyboard> 
          </BeginStoryboard> 
         </DataTrigger.EnterActions> 
        </DataTrigger> 
    </Style.Triggers> 
    

  • をしました

  • をISCHANGED

次のスタイルは、CellStyleSelectorを使用してRadGridViewの各行に適用されます。現在、私は、私は偽

public override Style SelectStyle(object item, DependencyObject container) 
{ 
     if (item is INotifyUpdate notifyUpdate) 
     { 
      //First I check if the cell has to blink 
      if (notifyUpdate.IsChanged) 
      { 
       notifyUpdate.IsChanged = false; 
      } 

      ... 
     } 

に値をリセットインターフェイスを持っているHACKとしてそれを考える - 私の問題は、それ以外の場合は設定しています、私は偽の値をリセットするために、このハックを実行してきたということです真実と戻って戻ったことはありません。その結果、別の行が更新され、グリッドがリフレッシュされると、私は再び点滅するように更新された行を取得します。

false値をfalseに戻す方法はありますか?

答えて

0

カスタムIsChangedプロパティを使用する代わりに、Binding.TargetUpdatedイベントのEventTriggerを作成し、そこでアニメーションを開始することができます。以下のような

何か:

<Style.Triggers> 
    <EventTrigger RoutedEvent="Binding.TargetUpdated"> 
     <BeginStoryboard> 
      <!-- your animation here --> 
     </BeginStoryboard> 
    </EventTrigger> 
</Style.Triggers> 

は、あなたが観察したいBindingためNotifyOnTargetUpdated=Trueを設定することを忘れないでください。

"不要な" IsChangedプロパティはまったく必要ありません。希望のアニメーションは、Bindingが目標値を更新したときにトリガーされます。

+0

私は最初にすべてのデータが読み込まれたときに最初の読み込みで何が起こるのですか? – advapi

+0

すべてのアニメーションが表示されます。あなたがしたくない場合は、添付されたプロパティまたは 'Behavior'を使って' NotifyOnTargetUpdated'プロパティを 'false'に初期設定します。 – dymanoid

+0

サンプルを提供していただけますか?各バインドでNotifyOnTargetUpdatedを設定する必要がありますか? – advapi

関連する問題