Co decyduje o tym, jak ocenia się wiele DepdencyProperties dla tej samej kontroli?Zamawia się, że powiązania DependencyProperties są oceniane?
Używam Extended WPF Toolkit PropertyGrid i mają zarówno SelectedObject i PropertyDefinitions zobowiązana:
<extToolkit:PropertyGrid AutoGenerateProperties="False" SelectedObject="{Binding ActiveDataPoint}" PropertyDefinitions="{Binding ActiveDataPoint.Properties}">
Problemem jest to, że OnSelectedObjectChanged pożary od obiektu uzależnienia iw tym zmienionym obsługi jest przedstawieniu PropertyDefinitions, który jest widząc jako zero. Jeśli skomentuję instrukcję obsługi OnSelectedObjectChanged, wówczas zobaczę, kiedy debugowanie, że zmienna OnPropertyDefinitionsChanged jest wywoływana po wywołaniu 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);
}
Problem jestem stoi omówiono na this forum thread, ale pytam bardziej ogólny WPF pytanie, jak mogę zmienić kolejność, że właściwości te są aktualizowane.
Próbowałem wielu połączeń do NotifyPropertyChanged w różnych zamówieniach, ale wydaje się, że nie ma to wpływu na to. Czy mogę spowodować, że zamówienie będzie inne, czy też powinienem zmodyfikować właściwość PropertyGrid tak, aby działała dla każdego z tych zamówień?