當我在我的WPF DataGrid中使用DataGridComboBoxColumn時,DataGrid SelectionChanged事件在加載WPF DataGrid中的行時基於行數多次觸發。WPF Datagrid SelectionChanged事件在加載行時觸發多次
我該如何阻止?正因爲如此,我正面臨性能問題。
當我在我的WPF DataGrid中使用DataGridComboBoxColumn時,DataGrid SelectionChanged事件在加載WPF DataGrid中的行時基於行數多次觸發。WPF Datagrid SelectionChanged事件在加載行時觸發多次
我該如何阻止?正因爲如此,我正面臨性能問題。
這取決於你如何設置綁定。
如果您有一個ObservableCollection並且您在加載數據時向其添加項目,則可能會遇到此類問題。有多種解決方案,但我寧願找出問題的地方,而不是輸入公里的文字,所以如果你能提供更多的細節,我會回答我最好的解決方案。
編輯:看到示例後,我想出了什麼問題:DataGrid中有一個DataGridComboBoxColumn,SelectedValue綁定到一個屬性;當執行綁定時,ComboBox的SelectionChanged事件被觸發,並被DataGrid上的處理程序捕獲。有幾種方法可以防止這種情況發生......一種是檢查EventHandler中的OriginalSource,另一種是處理ComboBox上的事件並將其Handled屬性設置爲true,以使其不會被DataGrid處理程序捕獲以及。
另一種更好的解決方案是不處理代碼隱藏中的選擇事件,除非有非常可靠的原因。最好將DataGrid的ItemsSource綁定到代表原始集合的ICollectionView(例如ListCollectionView); ICollectionView的CurrentItem會自動與DataGrid中的選定行同步,您可以在ICollectionView上處理選擇更改的事件,使其更容易(和單元測試,與UI實現有點分離等)。這不適用於多個選擇,但如果您一次只能選擇一行,它應該工作得很好。
你能告訴我如何 「在ComboBox上處理事件並將其Handled屬性設置爲true」 – 2012-01-27 06:03:05