我创建了一个包含两列的小型数据网格:
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事件未开始验证的任何建议吗?