2016-03-22 21 views
2

Silverlightアプリケーションでは、1秒ごとに観測可能なコレクションが変更されますが、並べ替えがキャンセルされた後はソートがキャンセルされます。 どうすれば解決できますか? これは各1秒起こる:私はあなたがリセット見ることができるようにので、私の意見では、DataGridののItemsSourceのsort descriptionがクリアされている、あなたのコレクション(新しい観測可能なコレクションを作成します)各タイマティックをデータソース変更後に並べ替えがキャンセルされる

private async void ClockTimerOnTick(object sender, EventArgs eventArgs) 
{ 
    var allOpenTrades = await NewAPI.GetOpenTrades(); 
    var openLongTrades = allOpenTrades.Where(x => x.gameType == (int)GameType.LongTerm); 
    LongTermModel.Open = new ObservableCollection<OpenTranasctionLongTerm> 
    (openLongTrades.Select(x => new OpenTranasctionLongTerm 
    {     
     isPut = x.CallPutStatusId == 2, 
     DateTraded = x.TransactionCreatedOn.ToLocalTime(), 
     Expiration = x.optionExpirationTime.ToLocalTime(), 
     Payout = x.OptionWinReturn, 
     Security = x.OptionName, 
     StrikePrice = x.TransactionQuote, 
     Traded = x.Amount, 
     Currency = UserCurrency, 
     isCall = x.CallPutStatusId == 1, 
     Type = x.CallPutStatusId == 1 ? "Call" : "Put" 
    }).ToList()); 
} 
+0

「並べ替えが並べ替えられた後」とはどういう意味ですか?あなたはあなたの質問をもう少し精巧にできますか? –

+0

https://media.giphy.com/media/3osxYvir0B3KjzRz9u/giphy.gifこれは私がそれを更新してデータを更新し、並べ替えがキャンセルされた場合です。@RafiqueMohammed –

+0

@scichart ItemsControlのタイプを指定できますか使用(DataGridまたはListView)?あなたはビューとしてサードパーティのコントロールを持っていますか? – Ilan

答えて

1

を。私はあなたの再作成(新しい観測可能なコレクションを作成する)コードを次のものに置き換えると、元の並べ替えの説明を保持するのに役立つと思います。

新しいClockTimerOnTickメソッドのコード

private void ClockTimerOnTick(object sender, EventArgs eventArgs) 
    { 
     var allOpenTrades = NewAPI.GetOpenTrades(); 
     var openLongTrades = allOpenTrades.Where(x => x.gameType == (int)GameType.LongTerm).ToList(); 
     //I'm assuming here that the LongTermModel.Open is an observable collection 
     LongTermModel.Open.Clear(); 
     openLongTrades.ForEach(term => 
     { 
      LongTermModel.Open.Add(new OpenTranasctionLongTerm 
      { 
       isPut = x.CallPutStatusId == 2, 
       DateTraded = x.TransactionCreatedOn.ToLocalTime(), 
       Expiration = x.optionExpirationTime.ToLocalTime(), 
       Payout = x.OptionWinReturn, 
       Security = x.OptionName, 
       StrikePrice = x.TransactionQuote, 
       Traded = x.Amount, 
       Currency = UserCurrency, 
       isCall = x.CallPutStatusId == 1, 
       Type = x.CallPutStatusId == 1 ? "Call" : "Put" 
      }); 
     }); 
    } 

ここだけはっきりと再記入LongTermModel.Openコレクション各タイマティック。

よろしくお願いいたします。

+0

は魔法のように機能します!ありがとう:) –

関連する問題