CLR Proprietà vs. proprietà di dipendenza
proprietà A CLR legge direttamente da parte del membro privato della classe. I metodi Get() e Set() della classe recuperano e memorizzano i valori della proprietà. Mentre invece si imposta un valore di una proprietà dipendenza non viene memorizzato in un campo dell'oggetto, ma in un dizionario di chiavi e valori fornito dalla classe di base DependencyObject. La chiave di una voce è il nome della proprietà e il valore è il valore che si desidera impostare.
vantaggi di una proprietà di dipendenza Meno consumo di memoria
La proprietà di dipendenza memorizza struttura solo quando è alterato o modificato. Quindi un'enorme quantità di memoria per i campi è gratuita.
valore dell'immobile eredità Ciò significa che se nessun valore è impostato per la proprietà allora tornerà l'albero di ereditarietà fino a dove si ottiene il valore.
notifica di modifica e Data Bindings Ogni volta che una proprietà cambia il suo valore che fornisce la notifica nella proprietà di dipendenza utilizzando INotifyPropertyChange e aiuta anche in associazione dati.
La partecipazione di animazione, stili e modelli una dipendenza Proprietà può animare, impostare gli stili utilizzando setter di stile e anche fornire modelli per il controllo.
CallBacks Ogni volta che una proprietà viene modificata, è possibile richiamare una richiamata.
Risorse È possibile definire una risorsa per la definizione di una proprietà di dipendenza in XAML.
Override metadati È possibile definire determinati comportamenti di una proprietà di dipendenza utilizzando PropertyMetaData. Pertanto, la sovrascrittura di metadati da una proprietà derivata non richiede la ridefinizione o la reimplementazione dell'intera definizione di proprietà.
fonte
2015-02-19 16:34:50
http://stackoverflow.com/questions/5193144/what-is-a-dipendency-property-and-when-is-it-used, http://stackoverflow.com/questions/617312/what-is -a-dependency-property – Nitesh
Una cosa importante è che le proprietà di dipendenza possono essere utilizzate solo sugli oggetti ereditati da DependencyObject. Uno dei motivi per non usarli su ViewModels e quindi non sempre in un progetto WPF. Inoltre hanno un piccolo impatto sulle prestazioni. – dowhilefor
Non sono sicuro del motivo per cui si dice "non è necessario controllare l'accesso al thread" ?. Per quanto ne so, se si imposta il valore di una proprietà di dipendenza da un altro thread rispetto al thread dell'interfaccia utente, verrà generata un'eccezione. –