我是WPF和C#的新手,並且主要是通過使用代碼示例構建我的第一個應用程序。我相信可能有更好的方法來做到這一點,我還沒有理解,所以我會向你們提出一些建議。wpf如何刷新綁定的viewmodel
我有一堆嵌套對象的treeview控件,這些嵌套對象從我也構建的WCF服務中下載到ObservableCollection viewmodel中。我在XAML的Windows.Resources中聲明瞭viewmodel。
我樹狀然後結合到靜態資源通過它的鍵名。
項= 「{綁定源= {StaticResource的MyCatalogModel},路徑=項目,模式=雙向,UpdateSourceTrigger =的PropertyChanged}」
在樹中的數據保存在本地的文件。當視圖模型被實例化時,它讀取該文件,或者如果該文件不存在,則創建該文件。
我現在有2個相關的問題。
有時導入的數據對象相當大,有很多嵌套的對象(子對象)。這需要很長時間來更新樹。我如何加快速度?我可以「關閉」通知ObservableCollection的變化的東西,並剛剛完成時重新加載(重新綁定)視圖模型?
我想讓用戶能夠基本清除樹中的所有項目並從頭開始。我有轉儲底層文件的代碼,正如我所說,當新的視圖模型被實例化時,它將被重新創建,但我不知道如何「重置」資源和樹的綁定。我該怎麼做呢?
感謝所有人的迴應和任何代碼片段將不勝感激!
您可以通過1)將TreeView綁定到視圖模型上的一個屬性(就像您已經擁有'Items'一樣),從而加快TreeView的速度。 2)當你加載你的數據時,在本地變量中創建* new *'ObservableCollection'並將數據加載到它中。 3)最後,將局部變量賦值給'Items'屬性。這會導致TreeView重新綁定/刷新到已經填充的新ObservableCollection的內容,而不是更新所發生的每個INotifyCollectionChanged事件。 – Steve