2010-09-21 151 views
1

當我在我的WPF DataGrid中使用DataGridComboBoxColumn時,DataGrid SelectionChanged事件在加載WPF DataGrid中的行時基於行數多次觸發。WPF Datagrid SelectionChanged事件在加載行時觸發多次

我該如何阻止?正因爲如此,我正面臨性能問題。

+0

你能告訴我如何 「在ComboBox上處理事件並將其Handled屬性設置爲true」 – 2012-01-27 06:03:05

回答

1

這取決於你如何設置綁定。

如果您有一個ObservableCollection並且您在加載數據時向其添加項目,則可能會遇到此類問題。有多種解決方案,但我寧願找出問題的地方,而不是輸入公里的文字,所以如果你能提供更多的細節,我會回答我最好的解決方案。

編輯:看到示例後,我想出了什麼問題:DataGrid中有一個DataGridComboBoxColumn,SelectedValue綁定到一個屬性;當執行綁定時,ComboBox的SelectionChanged事件被觸發,並被DataGrid上的處理程序捕獲。有幾種方法可以防止這種情況發生......一種是檢查EventHandler中的OriginalSource,另一種是處理ComboBox上的事件並將其Handled屬性設置爲true,以使其不會被DataGrid處理程序捕獲以及。

另一種更好的解決方案是不處理代碼隱藏中的選擇事件,除非有非常可靠的原因。最好將DataGrid的ItemsSource綁定到代表原始集合的ICollectionView(例如ListCollectionView); ICollectionView的CurrentItem會自動與DataGrid中的選定行同步,您可以在ICollectionView上處理選擇更改的事件,使其更容易(和單元測試,與UI實現有點分離等)。這不適用於多個選擇,但如果您一次只能選擇一行,它應該工作得很好。

+0

嗨Alex,我創建了一個示例並上傳到下面的路徑下。希望它提供更多信息。 http://cid-ab034720ad5419bf.office.live.com/self.aspx/.Public/ksvimal%20files/DgrSelChngMultiTrigg.zip – ksvimal 2010-09-22 06:39:35

+0

感謝您的反饋。有用 :-) – ksvimal 2010-09-23 04:25:30

相關問題