绑定DataGridComboBoxColumn
我试图将Ob的ObservableCollection绑定到DataGrid的DataGridComboBoxColumn。
DataGrid定义是:
这是ViewModel和Model
public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); var viewModel = new ViewModel(); DataContext = viewModel; } } public class ViewModel : ViewModelBase { private ObservableCollection _model; public ViewModel() { var list = new List(); var roadTypes = new ObservableCollection { new RoadType { Code = 1, Id = 1, Name = "Name1" }, new RoadType { Code = 1, Id = 1, Name = "Name1" } }; Model = new ObservableCollection { new Model { ColumnName = "Col1", RoadTypes = roadTypes }, new Model { ColumnName = "Col1", RoadTypes = roadTypes } }; } public ObservableCollection Model { get { return _model; } set { _model = value; RaisePropertyChanged(() => Model); } } } public class RoadType { public int Id { get; set; } public int Code { get; set; } public string Name { get; set; } } public class Model : ObservableObject { private ObservableCollection _roadTypes; public string ColumnName { get; set; } public ObservableCollection RoadTypes { get { return _roadTypes; } set { _roadTypes = value; RaisePropertyChanged(() => RoadTypes); } } }
DataGrid也显示文本列,但不显示ComboBox值。
怎么了?
由于RoadTypes不是一个简单的字符串列表,您需要告诉您的combobox需要在ComboBox中显示哪些属性。 尝试添加
DisplayMemberPath="Name"
你的combobox声明
–
更新:
好的,这是WPF数据网格的一个已知“function”。 问题是DataGridComboBox没有DataGrid的DataContext。 我修改了ComboBox的绑定,如下所示:
我修改了您在下载链接中提供的代码,并在打开combobox下拉列表时显示了combobox项目。
查看其中一些链接以获得进一步说明:
http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/b4b13a72-47f9-452f-85c6-6c4b5b606df5/
如何将集合绑定到WPF:DataGridComboBoxColumn
Excedrin头痛#3.5.40128.1:使用带有WPF DataGrid的combobox
让我查看所有这些站点的原因是查看“输出”窗口并注意到错误消息System.Windows.Data错误:2:无法找到目标元素的管理FrameworkElement或FrameworkContentElement。 信息