0
WPFフォームのDataGrid
がコードビハインドから完全に移入された簡単な例を作成しました。 ComboBox
を有するDataGridTemplateColumn
は、DisplayMember
およびSelectedValue
の2つの特性を含むDummyClass
に設定されたItemsSource
を有する。DataGrid Combobox SelectedValue
DataTable
には、column
に2つのrows
が1つ入力されます。 DataGrid
のItemsSource
は、DataTable
のデフォルトビューに設定されています。
コードが正しく、DataGrid
ディスプレイ内の各ComboBox
を実行し、dropdown
で利用可能な適切なオプションを持っていますが、DataTable
からの値を表示しません。
ComboBox
SelectedValue
をDataTable
の値に接続するには、どのようなバインディングが欠けていますか?ここで
public partial class MainWindow : Window
{
public class DummyClass
{
public int SelectedValue { get; set; }
public string DisplayValue { get; set; }
}
public ObservableCollection<DummyClass> DummyClassCollection;
public MainWindow()
{
InitializeComponent();
DummyClassCollection = new ObservableCollection<DummyClass>();
DummyClassCollection.Add(new DummyClass() { DisplayValue = "Item1", SelectedValue = 0 });
DummyClassCollection.Add(new DummyClass() { DisplayValue = "Item2", SelectedValue = 1 });
DummyClassCollection.Add(new DummyClass() { DisplayValue = "Item3", SelectedValue = 2 });
DataGridTemplateColumn templateColumn = new DataGridTemplateColumn();
DataTemplate dataTemplate = new DataTemplate();
FrameworkElementFactory control = new FrameworkElementFactory(typeof(ComboBox));
control.SetValue(ComboBox.ItemsSourceProperty, DummyClassCollection);
control.SetValue(ComboBox.DisplayMemberPathProperty, "DisplayValue");
//
//Some binding to connect ComboBox Selectedvalue to DataTable values
//
dataTemplate.VisualTree = control;
templateColumn.CellTemplate = dataTemplate;
templateColumn.Header = "DummyColumn";
dgGrid.Columns.Add(templateColumn);
DataTable table = new DataTable();
table.Columns.Add("DummyColumn");
table.Rows.Add(1);
table.Rows.Add(2);
dgGrid.AutoGenerateColumns = false;
dgGrid.ItemsSource = table.DefaultView;
}
}
おかげで、あなたが必要とするすべてです。しかし、2行目を追加しても、プログラムが実行されるとComboBoxに値が表示されるわけではありません。コンボボックスはまだ空白になります。 – Doug
確かに。更新された答え。今働くだろう。 – AQuirky
それだけです!大変感謝しています。 – Doug