如题,但我的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

解决方案 »

  1.   

    这代码看的真纠结。为什么不在XAML里写好模板绑定好呢?
      

  2.   

    你把两行绑定到一个变量上了吧 ,我在winform遇到过这种问题 中间重新定义了一个新的变量 解决了
      

  3.   

    不写在XAML里边是有原因的。我是要动态组成字段而非,写死的。
      

  4.   

    不写在XAML里边是有原因的。我是要动态组成字段而非,写死的。
      

  5.   

    遇到类似的问题,我的问题是2个combo,parent一个child一个,给parentcombo一个改变事件来改变childcombo,添加没问题,但是修改的时候,parentcombo能选择默认的值,childcombo却帮不到数据,跟踪的时候数据时正确的,但是显示的时候没显示?求前辈解答。