WPF:更新到.net框架4.7.2后奇怪的ComboBox行为

时间:2018-05-15 10:29:58

标签: .net wpf combobox datagridtemplatecolumn .net-4.7.2

升级到.NET Framework 4.7.2后,我注意到ComboBox进入DataGridTemplateColumn.CellEditingTemplate时会出现奇怪的行为。

SELECT t1.table_name, t1.table_rows, 
(SELECT COUNT(*) 
FROM INFORMATION_SCHEMA.COLUMNS
WHERE table_schema = 'my_db_name'
AND table_name = t1.table_name) AS colsm, 
t1.data_length
FROM INFORMATION_SCHEMA.TABLES t1
WHERE t1.TABLE_SCHEMA = 'my_db_name';

升级前,事件" cmbTest_SelectionChanged"仅在我更改SelectedItem时才会引发,但现在(在4.7.2。升级之后)" cmbTest_SelectionChanged"当我退出单元格编辑时,也会引发(" null" SelectedItem!),这对我的应用程序来说是一个问题。

如何避免此问题?

更新16/06/2018:我发现仅当ComboBox(Items2)的绑定列表是SelectedItem的属性时才会出现此问题。如果我将列表绑定到外部datacontext(FindAncestor ...),它似乎正常工作。

1 个答案:

答案 0 :(得分:1)

这是错误修正记录here的结果: 修复了使用VirtualizationMode = Recycling滚动DataGrid时出现的数据损坏。 [405066,PresentationFramework.dll,Bug]。

腐败的产生是因为即使在单元格退出编辑后,单元格编辑模板中的绑定仍会对更改做出反应。退出编辑时,修复程序断开所有绑定。在您的情况下,将ComboBox.ItemsSource设置为null,这会引发SelectionChanged事件。您可以通过测试ComboBox.ItemsSource是否为空来轻松忽略此事件。