같은 컨트롤의 여러 DependencyProperties가 평가되는 순서를 결정하는 것은 무엇입니까?DependencyProperties 바인딩을 평가하도록 명령 하시겠습니까?
나는 구속 SelectedObject 및 PropertyDefinitions 모두를 Extended WPF Toolkit PropertyGrid가를 사용하고 있습니다 오전 :
<extToolkit:PropertyGrid AutoGenerateProperties="False" SelectedObject="{Binding ActiveDataPoint}" PropertyDefinitions="{Binding ActiveDataPoint.Properties}">
문제는 종속성 속성에서 OnSelectedObjectChanged 화재가, 그 변경된 핸들러에서 인 PropertyDefinitions을 참조하고 있다는 것입니다 null로 본다. OnSelectedObjectChanged 핸들러를 주석 처리하면 OnSelectedObjectChanged를 호출 한 후 OnPropertyDefinitionsChanged가 디버깅 될 때를 볼 수 있습니다.
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를 수정하여 어느 쪽 주문으로도 사용할 수 있습니까?