DataGridTemplate 列 ComboBox で選択した項目を保持する際に問題が発生しています。データグリッドの最初の列として DataTemplate の編集可能なコンボボックス列があり、その隣にテキスト列があります。DataGrid には、SQL ストアド プロシージャから読み取ったデータが入力されます。コンボボックスでアイテムを選択してテキストフィールドに移動し、入力を開始すると、コンボの選択が空白になることを除いて、すべて正常に機能します。新しいアイテムまたは既存のアイテムの両方を空白にします。奇妙なことに、これは最初の 1 回だけです。ComboBox 値を再選択するか、新しいアイテムを再度追加してテキスト フィールドに戻ると、空白になりません。私はアイデアが不足しており、多くの組み合わせを試しましたが、今のところうまくいきません. これが私のコードです:
これは、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;
}
これは、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"/>