什么决定的顺序对同一控制多个DepdencyProperties在得到评估?令,DependencyProperties绑定进行评估?
我使用的Extended WPF Toolkit PropertyGrid中,并同时拥有SelectedObject和PropertyDefinitions约束:
<extToolkit:PropertyGrid AutoGenerateProperties="False" SelectedObject="{Binding ActiveDataPoint}" PropertyDefinitions="{Binding ActiveDataPoint.Properties}">
的问题是,从依赖属性的OnSelectedObjectChanged火灾,并在改变处理它引用PropertyDefinitions,它是视为空。如果我注释掉OnSelectedObjectChanged处理程序,然后我可以在调试时OnPropertyDefinitionsChanged被称为呼叫OnSelectedObjectChanged后看到。
public static readonly DependencyProperty PropertyDefinitionsProperty = DependencyProperty.Register("PropertyDefinitions", typeof(PropertyDefinitionCollection), typeof(PropertyGrid), new UIPropertyMetadata(null, OnPropertyDefinitionsChanged));
public PropertyDefinitionCollection PropertyDefinitions
{
get
{
return (PropertyDefinitionCollection)GetValue(PropertyDefinitionsProperty);
}
set
{
SetValue(PropertyDefinitionsProperty, value);
}
}
private static void OnPropertyDefinitionsChanged(DependencyObject o, DependencyPropertyChangedEventArgs e)
{
Console.Write("I changed!");
}
public static readonly DependencyProperty SelectedObjectProperty = DependencyProperty.Register("SelectedObject", typeof(object), typeof(PropertyGrid), new UIPropertyMetadata(null, OnSelectedObjectChanged));
public object SelectedObject
{
get
{
return (object)GetValue(SelectedObjectProperty);
}
set
{
SetValue(SelectedObjectProperty, value);
}
}
private static void OnSelectedObjectChanged(DependencyObject o, DependencyPropertyChangedEventArgs e)
{
PropertyGrid propertyInspector = o as PropertyGrid;
if(propertyInspector != null)
propertyInspector.OnSelectedObjectChanged((object)e.OldValue, (object)e.NewValue);
}
我面临的问题是this forum thread讨论,但我问我如何改变这些属性被更新的顺序一个更一般的问题WPF。
我已经试过有以不同的顺序多次调用NotifyPropertyChanged但这似乎并没有影响到这一点。我可能会导致为了不同的,或者我应该只是修改的PropertyGrid,这样它会为任何顺序工作?