После обновления до .NET Framework 4.7.2 я заметил странное поведение ComboBox, когда он находится в DataGridTemplateColumn.CellEditingTemplate.
<DataGrid
IsReadOnly="False"
ItemsSource="{Binding Path=Items, Mode=OneWay}">
<DataGrid.Columns>
<DataGridTemplateColumn
Header="Test"
IsReadOnly="False"
Width="70">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock
VerticalAlignment="Center"
TextAlignment="Left"
Text="{Binding Path=Id, Mode=OneWay}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<ComboBox
Name="cmbTest"
DisplayMemberPath=""
HorizontalAlignment="Stretch"
IsEditable="True"
IsEnabled="True"
IsReadOnly="False"
IsSynchronizedWithCurrentItem="False"
ItemsSource="{Binding Path=Items2, Mode=OneWay}"
Margin="0"
SelectedItem="{x:Null}"
SelectedValue="{x:Null}"
SelectedValuePath=""
Text=""
VerticalAlignment="Center"
Visibility="Visible"
SelectionChanged="cmbTest_SelectionChanged">
</ComboBox>
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
Перед обновлением событие «cmbTest_SelectionChanged» вызывалось только при изменении SelectedItem, но теперь (после обновления 4.7.2.) «CmbTest_SelectionChanged» вызывается (с «null» SelectedItem!) Также при выходе из режима редактирования ячейки. ..и это проблема для моего приложения.
Как мне избежать этой проблемы?
ОБНОВЛЕНИЕ 16/06/2018: я обнаружил, что проблема возникает только тогда, когда список привязок к ComboBox (Items2) является свойством SelectedItem. Если я привяжу список к внешнему текстовому тексту (FindAncestor ...), он, кажется, будет работать правильно.