Wie kann ich Callback-Methoden in MyDP1_Changed und MyDP1_Changed deaktivieren? Ich brauche dissable Rückruf, wenn ich Wert von anderer Methode Rückruf ändernWie kann der DependencyProperty-Rückruf deaktiviert werden?
class MyDependencyObject : DependencyObject
{
public object MyDP1 {
get{ return GetValue(MyDP1Property); }
set{ return SetValue(MyDP1Property, value); }
}
public object MyDP2 {
get{ return GetValue(MyDP2Property); }
set{ return SetValue(MyDP2Property, value); }
}
public static readonly DependencyProperty MyDP1Property =
DependencyProperty.Register("MyDP1", typeof(object), typeof(MyDependencyObject)
, new UIPropertyMetadata(MyDP1_Changed));
public static readonly DependencyProperty MyDP2Property =
DependencyProperty.Register("MyDP2", typeof(object), typeof(MyDependencyObject)
, new UIPropertyMetadata(MyDP2_Changed));
private static void MyDP1_Changed(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
d.SetValue(MyDP2Property, e.NewValue);
}
private static void MyDP2_Changed(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
d.SetValue(MyDP1Property, e.OldValue);
}
}
, wenn Sie beiden Eigenschaften mit den gleichen Werten pflegen wollen immer ... warum nur 1 Objekt nicht verwenden? – Jose
Ein 'PropertyChangedCallback' wird nur dann aufgerufen, wenn sich ein Eigenschaftswert * tatsächlich * ändert. Ihr Problem scheint hier ein Tippfehler in 'MyDP2_Changed' zu sein. Es sollte wahrscheinlich 'e.NewValue' anstelle von' e.OldValue' gesetzt werden. Dann würde es keine unendliche Rekursion geben. – Clemens
Es ist ein einfaches Beispiel. Ich brauche dissable Callback, wenn ich den Wert von anderen Callback-Methode –