c # - Forstå, hvordan DependencyProperty fungerer og implementeres

Indlæg af Hanne Mølgaard Plasc

Problem



Silverlight/WPF DependencyProperty gør det muligt at binde data og angiver, hvornår ejendommen er ændret i værdi uden at implementere INotifyPropertyChanged. Mit spørgsmål er om hvordan dette virker på det lave niveau - hvordan udfører DependencyProperty eller DependencyObject denne ændringsmeddelelse, når hverken DependencyObject, DependencyProperty eller DispatcherObject definerer nogen begivenheder. Ville dette have noget at gøre med DispatcherObject.Dispatcher-ejendommen? [1] [2]



  Afhængighedsegenskaber eller Klassen DependencyObject er ikke native
  støtte INotifyPropertyChanged med henblik på at producere notifikationer
  af ændringer i DependencyObject kildeegenskabsværdi til dataindbinding
  operationer.



Denne fremragende præcisering blev taget ord for ord fra:


http://msdn.microsoft.com/en-us/library/ms752914.aspx[3]


http://msdn.microsoft.com/en-us/library/ms753358.aspx[4]

Bedste reference


Afhængighedsegenskaber er tæt integreret med bindingssystemet internt. Så i stedet for at 'notificere, at ejendommen er ændret', kan koden, der angiver afhængighedsegenskaben, ringe direkte ind i bindingssystemet og fortælle det om at blive opdateret.


På samme måde kan ting som arvelige/vedhæftede egenskaber opdateres på eventuelle efterkommende elementer og/eller layout/måle/arrangere kan opdateres. Det kan endda fortælle nogen udløsere (i Styles eller ControlTemplates), der skal evalueres.


Dispatcheren er ikke rigtig relateret, men kan bruges under processen.


Så kort sagt, det er bagt ind i WPF/Silverlight.

Andre referencer 1


Nå, når du registrerer en DependencyProperty, giver du en tilbagekaldelse, der skal kaldes, når værdien ændres.


Her har du flere detaljer. Jeg tror ikke noget andet er offentligt om WPF's internals. Jeg kan måske være forkert. [5]