2017-03-28 31 views
0

WPFフォームのDataGridがコードビハインドから完全に移入された簡単な例を作成しました。 ComboBoxを有するDataGridTemplateColumnは、DisplayMemberおよびSelectedValueの2つの特性を含むDummyClassに設定されたItemsSourceを有する。DataGrid Combobox SelectedValue

DataTableには、columnに2つのrowsが1つ入力されます。 DataGridItemsSourceは、DataTableのデフォルトビューに設定されています。

コードが正しく、DataGridディスプレイ内の各ComboBoxを実行し、dropdownで利用可能な適切なオプションを持っていますが、DataTableからの値を表示しません。

ComboBoxSelectedValueDataTableの値に接続するには、どのようなバインディングが欠けていますか?ここで

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; 

    } 
}  

答えて

0

は...あなたの応答のための

 control.SetValue(ComboBox.DisplayMemberPathProperty, "DisplayValue"); 
     control.SetValue(ComboBox.SelectedValuePathProperty, "SelectedValue"); 
     control.SetValue(ComboBox.SelectedValueProperty, new Binding("DummyColumn")); 
+0

おかげで、あなたが必要とするすべてです。しかし、2行目を追加しても、プログラムが実行されるとComboBoxに値が表示されるわけではありません。コンボボックスはまだ空白になります。 – Doug

+0

確かに。更新された答え。今働くだろう。 – AQuirky

+0

それだけです!大変感謝しています。 – Doug

関連する問題