我正在使用MVVMLight和Fody在C#/ WPF中編寫一個排序算法可視化器。在我視圖模型我有一個觀察的集合是這樣的:使用MVVMLight中的ObservableCollection中的數據更新「實時」視圖
public ObservableCollection<int> NumbersCollection{ get; set; }
現在的命令(方法),我改變集合的內容(在這種情況下,我做了冒泡排序)。像這樣:
IMutableSortAlgorithm sorter = ServiceLocator.Current.GetInstance<IMutableSortAlgorithm>();
sorter.MuatbleSort(this.NumbersCollection);
while (!sorter.Finished())
{
sorter.NextStep();
this.RaisePropertyChanged("NumbersCollection"); // not neccesary
Thread.Sleep(400);
}
在調用sorter.NextStep()後,集合被更改。每一步之後,我嘗試通過調用RaisePropertyChanged來更新視圖並睡眠400毫秒。
因此,我基本上希望在每次更改(步驟)後更新視圖,但視圖僅在方法完成後更新。 (爲此,我甚至不需要調用RaisePropertychanged ...)
爲了方便,我可以使用後臺工作器。但我首先想要解決這個問題,而不需要額外的工作線程。由於我在主GUI線程中,因此不需要調用Dispatcher.Invoke,對吧? (我試過了,它無法正常工作..)。
有人有線索如何刷新用戶界面後,每一步?
編輯: sorter.NextStep()does 不是插入或刪除項目的列表,但它交換值。像col [i] = col [j] ...你知道 - 排序的東西。我想在UI上實現實時的更改。
謝謝,這是絕對正確的...系統無法更新UI,如果UI線程睡覺... :)很好的示例btw! –