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

  • 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事件未启动验证的任何建议吗?