2017-10-11 1 views
0

私はリストソースを持ち、それをXAMLコントロールでバインドします。 このように考えてください。私は "CustomControl"でそれを作った。C#バインディングコレクション+アニメーション

  1. リストA(文字列 "" +アニメーション)
  2. リストB(文字 "B" +アニメーション)
  3. リストC(文字列 "C" +アニメーション)

enter image description here

今、UI上に3つのアイテムが表示されます。各UIには繰り返しのアニメーションがあります。 例:XYサイズを1.0,2.0,1.0(同じサイズ)に変更し、それを永久に繰り返します。

私の問題です。

リストをPropertyChangedで更新すると、 繰り返しアニメーションが変わってしまいます。リストの1つを更新すると、 PropertyChangedが呼び出されるためです。アニメーションは最初から強制的に開始されます。それは...美しい繰り返しではありません。(

任意のアイデアがあります

私の考え

さて、私はリストのソースプロパティを持っている例:?。。

ObservableCollection<DerMeter> _derSource = new ObservableCollection<DerMeter>(); 
public ObservableCollection<DerMeter> DerSource 
    { 
     get { return _derSource; } 
     set 
     { 
      this.Set(ref _derSource, value); // = PropertyChanged 
     } 
    } 

と "_derSource"を最初に変更してプロパティに挿入します。

private void updateSource() 
{ 
       //Do something.. 
       DerSource = _derSource; 
} 

となり、PeopertyChangedが呼び出されます。 C#は更新されたリストから新しいUIを作成します。 これは、アニメーションがリセットされ、最初から開始されることを意味します。

これがリストでない場合、C#は新しいUIを作成しません。

+1

あなたはストーリーボードアニメーションを意味しますか? –

+0

問題のあるサンプルコードを置いた方がずっと良いでしょう。 – Romasz

答えて

0

恐らく試してみることは、リストを更新中にPropertyChangedイベントをオフにして、アップデートが完了したらオンにすることです。

YourModel.PropertyChanged -= YourModel_PropertyChanged; 

// Update the list. 

YourModel.PropertyChanged += YourModel_PropertyChanged; 
+0

私はいくつかのコードを更新...しかし、私は自分のコードをアップロードすることはできません。デバイスと接続されているためです。デバイスなしでは、動作しません... –