DataGrid ComboBox-Bindungsproblem mit ausgewähltem oder neuem Element

Ich habe ein Problem damit, das ausgewählte Element in einer DataGridTemplate-Spalte ComboBox beizubehalten. Ich habe die bearbeitbare Combobox-Spalte DataTemplate als erste Spalte im Datagrid und daneben eine Textspalte. Das DataGrid wird mit Daten gefüllt, die aus einer gespeicherten SQL-Prozedur gelesen wurden. Alles funktioniert einwandfrei, außer wenn ich ein Element in der Combobox auswähle und in das Textfeld gehe und mit der Eingabe beginne, wird die Combo-Auswahl ausgeblendet. Es wird sowohl für einen neuen Artikel als auch für einen vorhandenen Artikel ausgeblendet. Seltsamerweise passiert dies nur beim ersten Mal. Wenn ich den ComboBox-Wert erneut auswähle oder das neue Element erneut hinzufüge und zum Textfeld zurückkehre, wird es nicht ausgeblendet. Mir gehen die Ideen aus und ich habe viele Kombinationen ausprobiert, aber bisher kein Glück. Hier ist mein Code:

So fülle ich das DataGrid auf:

using (SqlCommand cmd = new SqlCommand())
{
    cmd.CommandText = "GetProducts";
    cmd.CommandType = CommandType.StoredProcedure;
    cmd.Connection = sqlConn;

    var reader = cmd.ExecuteReader();
    var dt = new DataTable();
    dt.Load(reader);
    dt.Columns["ProductName"].AllowDBNull = true;
    dtProductCfgTable = dt;
    ProductCfgGrid.ItemsSource = dtProductCfgTable.DefaultView;
}

Dies ist die Deklaration für ProductNamesList:

public List<string> ProductNamesList { get; set; }

XAML:

<DataGridTemplateColumn Header="ProductName">
   <DataGridTemplateColumn.CellTemplate>
      <DataTemplate>
        <ComboBox ItemsSource="{Binding ProductNamesList, 
                                RelativeSource={RelativeSource AncestorType=Window}}"  
                                SelectedItem="{Binding ProductName 
                                IsSynchronizedWithCurrentItem="False"  
                                BorderThickness="1.2 1.2 0 0" BorderBrush="Black" 
                                Background="LightCyan" IsEditable="True" />
      </DataTemplate>
   </DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>  
<DataGridTextColumn Binding="{Binding ShippingAddress}" 
                    Width="100" 
                    Header="ShippingAddress" 
                    Visibility="Visible"/>

Antworten auf die Frage(1)

Ihre Antwort auf die Frage