如题,但我的datagrid并没有使用xaml而是动态生成的。
XAML内只有一个壳<DataGrid CanUserAddRows="False" AutoGenerateColumns="False" Height="256" HorizontalAlignment="Left" Name="dataGrid" VerticalAlignment="Top" Width="383" EnableRowVirtualization="True"/>其余属性皆为在代码中生成switch (columConfig.ControlTypes)
{
case 0:
case 1:
case 6:
case 13:
DataGridTextColumn text_column = new DataGridTextColumn();
text_column.Header = columConfig.Caption;
Binding text_column_Binding = new Binding(columConfig.FieldName);
text_column_Binding.Mode = BindingMode.TwoWay;
text_column_Binding.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged;
text_column.Binding = text_column_Binding;
dataGrid.Columns.Add(text_column);
break;
case 2:
case 4://下拉框 String cFieldName = columConfig.FieldName.ToString();
DataTable combo_column_ds = new DataTable();
combo_column_ds.Columns.Add(new DataColumn("id"));
combo_column_ds.Columns.Add(new DataColumn(cFieldName));
DataGridComboBoxColumn comboBoxColumn = new DataGridComboBoxColumn();
comboBoxColumn.Header = columConfig.Caption;
comboBoxColumn.SelectedValuePath = cFieldName;
comboBoxColumn.DisplayMemberPath = cFieldName;
Binding binding = new Binding();
binding.Path = new PropertyPath(cFieldName);
comboBoxColumn.SelectedValueBinding = binding;
Binding itemsSourceBinding = new Binding();
itemsSourceBinding.Source = combo_column_ds;
BindingOperations.SetBinding(comboBoxColumn, DataGridComboBoxColumn.ItemsSourceProperty, itemsSourceBinding);
dataGrid.Columns.Add(comboBoxColumn); break;
case 3://日历
DataGridTemplateColumn date_tpl_column = new DataGridTemplateColumn();
DataTemplate date_tpl_column_dtpl = new DataTemplate();
date_tpl_column.Header = columConfig.Caption;
FrameworkElementFactory sb = new FrameworkElementFactory(typeof(DatePicker));
Binding date_tpl_column_Binding = new Binding(columConfig.FieldName);
date_tpl_column_Binding.Mode = BindingMode.TwoWay;
date_tpl_column_Binding.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged;
sb.SetBinding(DatePicker.SelectedDateProperty, date_tpl_column_Binding);
sb.SetValue(DatePicker.NameProperty, columConfig.FieldName);
date_tpl_column_dtpl.VisualTree = sb;
date_tpl_column_dtpl.Seal();
date_tpl_column.CellTemplate = date_tpl_column_dtpl;
date_tpl_column.CellEditingTemplate = date_tpl_column_dtpl;
dataGrid.Columns.Add(date_tpl_column);
break;
case 8: //复选框
DataGridCheckBoxColumn checkbox_column = new DataGridCheckBoxColumn();
checkbox_column.Header = columConfig.Caption;
Binding checkbox_column_Binding = new Binding(columConfig.FieldName);
checkbox_column_Binding.Mode = BindingMode.TwoWay;
checkbox_column_Binding.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged;
checkbox_column.Binding = checkbox_column_Binding;
dataGrid.Columns.Add(checkbox_column);
break;
} 现在加入字段1进行改动则字段2的combox受此影响,并更新数据源呢WPFdatagridCombox
XAML内只有一个壳<DataGrid CanUserAddRows="False" AutoGenerateColumns="False" Height="256" HorizontalAlignment="Left" Name="dataGrid" VerticalAlignment="Top" Width="383" EnableRowVirtualization="True"/>其余属性皆为在代码中生成switch (columConfig.ControlTypes)
{
case 0:
case 1:
case 6:
case 13:
DataGridTextColumn text_column = new DataGridTextColumn();
text_column.Header = columConfig.Caption;
Binding text_column_Binding = new Binding(columConfig.FieldName);
text_column_Binding.Mode = BindingMode.TwoWay;
text_column_Binding.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged;
text_column.Binding = text_column_Binding;
dataGrid.Columns.Add(text_column);
break;
case 2:
case 4://下拉框 String cFieldName = columConfig.FieldName.ToString();
DataTable combo_column_ds = new DataTable();
combo_column_ds.Columns.Add(new DataColumn("id"));
combo_column_ds.Columns.Add(new DataColumn(cFieldName));
DataGridComboBoxColumn comboBoxColumn = new DataGridComboBoxColumn();
comboBoxColumn.Header = columConfig.Caption;
comboBoxColumn.SelectedValuePath = cFieldName;
comboBoxColumn.DisplayMemberPath = cFieldName;
Binding binding = new Binding();
binding.Path = new PropertyPath(cFieldName);
comboBoxColumn.SelectedValueBinding = binding;
Binding itemsSourceBinding = new Binding();
itemsSourceBinding.Source = combo_column_ds;
BindingOperations.SetBinding(comboBoxColumn, DataGridComboBoxColumn.ItemsSourceProperty, itemsSourceBinding);
dataGrid.Columns.Add(comboBoxColumn); break;
case 3://日历
DataGridTemplateColumn date_tpl_column = new DataGridTemplateColumn();
DataTemplate date_tpl_column_dtpl = new DataTemplate();
date_tpl_column.Header = columConfig.Caption;
FrameworkElementFactory sb = new FrameworkElementFactory(typeof(DatePicker));
Binding date_tpl_column_Binding = new Binding(columConfig.FieldName);
date_tpl_column_Binding.Mode = BindingMode.TwoWay;
date_tpl_column_Binding.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged;
sb.SetBinding(DatePicker.SelectedDateProperty, date_tpl_column_Binding);
sb.SetValue(DatePicker.NameProperty, columConfig.FieldName);
date_tpl_column_dtpl.VisualTree = sb;
date_tpl_column_dtpl.Seal();
date_tpl_column.CellTemplate = date_tpl_column_dtpl;
date_tpl_column.CellEditingTemplate = date_tpl_column_dtpl;
dataGrid.Columns.Add(date_tpl_column);
break;
case 8: //复选框
DataGridCheckBoxColumn checkbox_column = new DataGridCheckBoxColumn();
checkbox_column.Header = columConfig.Caption;
Binding checkbox_column_Binding = new Binding(columConfig.FieldName);
checkbox_column_Binding.Mode = BindingMode.TwoWay;
checkbox_column_Binding.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged;
checkbox_column.Binding = checkbox_column_Binding;
dataGrid.Columns.Add(checkbox_column);
break;
} 现在加入字段1进行改动则字段2的combox受此影响,并更新数据源呢WPFdatagridCombox
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货