DataGridTemplateColumn ComboBox未更新行

时间:2017-04-02 17:55:37

标签: c# wpf datagrid datagridtemplatecolumn

我创建了一个包含两列的小型数据网格:

  • DataGridTextColumn
  • DataGridTemplateColumn

Attatched是RowValidationRules中的一个项目,如果我更改DataGridTextColumn中的单元格,则会触发该项目。

DataGrid的itemsSource是一个ObservableCollection。 ComboBox有自己的ObservableCollection。

Combobox中的值与Datagrid中的相应id正确关联。

如果我更改了ComboBox中的值,则会成功触发ObservableCollection项的PropertyChanged处理程序,但不会触发ValidationRule。

只有在更改DataGridTextColumn单元格中的值后,才会触发验证。

这是DataGridTemplateColumn的代码:

FrameworkElementFactory cbFactory = new FrameworkElementFactory(typeof(ComboBox));



        cbFactory.SetValue(ComboBox.ItemsSourceProperty, CategoriesDropDown);
        cbFactory.SetValue(ComboBox.DisplayMemberPathProperty, "CategorieDescription");
        cbFactory.SetValue(ComboBox.SelectedValuePathProperty, "Id");
        cbFactory.SetValue(ComboBox.NameProperty, "cboTest");
        cbFactory.SetValue(ComboBox.SelectedValueProperty, new Binding("ParentID") { Mode = BindingMode.TwoWay, UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged});

        cbFactory.AddHandler(ComboBox.SelectionChangedEvent, new SelectionChangedEventHandler(comboChanged));

        DataGridTemplateColumn parentCol = new DataGridTemplateColumn()
        {
            Header = "Übergeordnete Kategorie",
            CellTemplate = new DataTemplate(typeof(ComboBox)) { VisualTree = cbFactory },
            CellEditingTemplate = new DataTemplate(typeof(ComboBox)) { VisualTree = cbFactory },
        };

它与DataGridComboBoxColumn一样工作,但这不是理想的方式。

有关PropertyChanged事件未开始验证的任何建议吗?

0 个答案:

没有答案