我有一個包含兩個選項卡的選項卡控件的屏幕的WPF應用程序。每個選項卡上都有一個數據網格,每個數據網格綁定到Part對象的ObservableCollection。該零件有幾個「數量」屬性,需要在網格之間進行同步。例如,如果用戶更改了grid1上partABC的數量,則partABC或者需要以相同數量添加到grid2,或者如果grid2已經包含partABC,則必須更改其數量以反映grid1。如何保持單獨集合的屬性同步?
我的問題是,這必須在兩個方向工作。如果我在兩個網格的每個部件上都設置了PropertyChanged處理程序,那麼最終會出現無限循環,因爲它們會不斷更新對方的數量。直到現在,我在選項卡控件選擇更改事件期間處理這個事情,只是遍歷其中一個列表並逐個設置數量。直到我意識到用戶可能會將數千個零件添加到他們的列表中爲止,並且此時此過程花費了無法接受的時間量完成(對於4500個零件對象,大約需要25秒),這種方法運行得很好。
編輯
第一網格包含在數據庫中的每一個部分,作爲不大不小的「接單」,用戶只需滾動到他們正在尋找的一部分,並輸入數量。第二個網格僅包含由用戶手動輸入的部分,以便他們喜歡輸入他們想要的部分的數量。 Grid2始終是grid1的子集。
如果您將新值與現有值進行比較並且不會產生無限循環財產如果相同就會改變事件。例如,'set {if(value!= _myproperty){_ myproperty = value; RaisePropertyChanged(()=> MyProperty);}}' – Dmitry