Problem związany z wiązaniem ComboBox DataGrid z wybranym lub nowym elementem
Mam problem z zachowaniem zaznaczonego elementu w kolumnie DataGridTemplate ComboBox. Mam edytowalną kolumnę combobox DataTemplate jako pierwszą kolumnę w datagrid, a obok mam kolumnę tekstową. DataGrid jest wypełniona danymi odczytanymi z procedury zapisanej w bazie SQL. Wszystko działa dobrze, z wyjątkiem sytuacji, gdy wybieram element w polu kombi i przechodzę do pola tekstowego i zaczynam w nim wpisywać, zaznaczenie Kombi jest puste. Wygasza zarówno dla nowego przedmiotu, jak i istniejącego przedmiotu. Co dziwne, dzieje się to tylko za pierwszym razem. Po ponownym wybraniu wartości ComboBox lub ponownym dodaniu nowego elementu i powrocie do pola tekstowego nie jest pusta. Brakuje mi pomysłów i próbowałem wielu kombinacji, ale do tej pory nie miałem szczęścia. Oto mój kod:
Oto jak zapełniam DataGrid:
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;
}
To jest deklaracja dla listy 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"/>