WPF: Callback, wenn ein DependencyProperty von außen gelesen wird!



  • Hallo Leute,

    ich möchste mitbekommen,wenn ein dp-prop gelesen wird! Folgender schnippsel:

    public bool Visible
    		{
    			get { return (bool)GetValue(VisibleProperty); }
    			set { SetValue(VisibleProperty, value); }
    		}
    
    		// Using a DependencyProperty as the backing store for Visible.  This enables animation, styling, binding, etc...
    		public static readonly DependencyProperty VisibleProperty =
    			DependencyProperty.Register("Visible", typeof(bool),
    			typeof(ViewItemBase),
    			new UIPropertyMetadata(true, OnVisibleWriting, OnVisiblyReading), test);
    
    		private static object OnVisiblyReading(DependencyObject d, object basevalue)
    		{
    			//Beim lesen
    		}
    
    		private static void OnVisibleWriting(DependencyObject d, DependencyPropertyChangedEventArgs e)
    		{
    			//Beim Schreiben
    		}
    

    Ich will, dass das OnVisiblyReading callback ausgerufen wird, wenn jemand!

    var bla = item.Visible;
    

    ausführt!

    der Getter des Properties

    get { return (bool)GetValue(VisibleProperty); }
    

    wird auch aufgerufen, aber das callback kommt nicht, oder hab ich nen denkfehler drin? Oder geht das nich?

    Grüße



  • Hi,

    dein Callback im dritten Parameter von UIPropertyMetadata wird aufgerufen, wenn DependencyObject.CoerceValue aufgerufen wird, das hat mit dem reinen Lesen der Property aber erstmal nichts zu tun. Ich glaube nicht, dass das über ein Callback möglich ist.
    Siehe:
    http://msdn.microsoft.com/de-de/library/ms587983%28v=vs.110%29.aspx
    http://msdn.microsoft.com/de-de/library/system.windows.dependencyobject.coercevalue%28v=vs.110%29.aspx

    Wofür brauchst du sowas denn?

    mfG
    KaPtainCugel



  • Ahh ok schade!

    Ja es ging mir um die Datenkonsitenz

    Das Visible DP , setz bei true die Visibilty der Elements auf Visible und bei
    false auf Hidden! logisch 🙂

    wenn aber nun jemand das Visibility Property des Elements nicht über das Visible Property ändert, bekommt diese nicht mit!

    Ich hätte gern anstatt auf das DP backing field, des Visible zu lesen, noch gern aus gewertet ob es auch tatsächlich konsistent zum Visibility Property ist..

    Aber ich kann es auch anders lösen, war nur so ne idee!


Log in to reply