Co to jest właściwość zależności w .Net (szczególnie w kontekście WPF). Jaka jest różnica w stosunku do zwykłej nieruchomości?
136
Co to jest właściwość zależności w .Net (szczególnie w kontekście WPF). Jaka jest różnica w stosunku do zwykłej nieruchomości?
Właściwości zależności są właściwościami klas, które pochodzą od DependencyObject i są wyjątkowe w tym, że zamiast po prostu używać pola zapasowego do przechowywania ich wartości, używają niektórych metod pomocniczych w DependencyObject.
Najfajniejsze w nich jest to, że mają wbudowaną instalację do powiązania danych. Jeśli coś z nimi powiążesz, powiadomią o tym, gdy się zmienią.
Jedyne wyjaśnienie, które uznałem za pomocne i dobrze napisane, to to: http://www.wpftutorial.net/dependencyproperties.html
Zasadniczo właściwości DependencyProperties różnią się od zwykłych właściwości tym, że nie są tylko ustawieniami / pobierającymi wartości pól w klasie, ale pobierają rzeczywiste wartości dynamicznie w czasie wykonywania. Plik
SetValue()
Metoda PRR jest dość prosta i ustawia lokalną wartość nieruchomości do wartości Ci go dał. Jednak gdy spróbujeszGetValue()
z DependencyProperty, najpierw szuka wartości lokalnej, jeśli nie ma jej (co jest możliwe w DependencyProperties w przeciwieństwie do zwykłych właściwości), będzie kontynuowała logiczne drzewo interfejsu użytkownika, dopóki nie znajdzie takiej wartości. Jeśli struktura osiągnęła szczyt drzewa bez znalezienia żadnych wartości lokalnych, użyje wstępnie zdefiniowanej wartości domyślnej jako wartości właściwości.Ta metoda pozwala DependencyProperties zużywać mniej pamięci niż zwykłe właściwości, ponieważ tylko wartości, które zostały jawnie ustawione przez użytkownika, będą przechowywane lokalnie.
Jak wspomniano powyżej, DependencyProperties pozwalają nam również powiązać się z nimi w kodzie XAML i ustawić dla nich wyzwalacze, co w przypadku zwykłych właściwości jest niedozwolone.
Mam nadzieję, że udało mi się wyjaśnić część niejasności :)
źródło
Grid.Row="1"
na aButton
ustawi go na wiersz nr 2 w obiekcie nadrzędnymGrid
(ze względu na fakt, że wiersze są liczone od zera), aleRow
DependencyProperty należy doGrid
obiektu.DependencyProperties also allow us to bind to them in the XAML code and set triggers on them, which on regular properties is not allowed
, czy chodziło Ci o wiązanie w języku XAML i ustawianie wyzwalaczy, czy po prostu ustawianie wyzwalaczy nie jest dozwolone. Dziękuję za dalsze działania i pomoc w wyjaśnieniu sprawy!Value
właściwość (Nie DP) o wartości 0 i chcesz, aby Twój widok robił coś poValue
zmianie na 1. Będziesz mógł to zrobić używającDataTrigger
i ustawiającBinding={Binding Path=Value, Value=1}
http://techpunch.wordpress.com/2008/09/25/wpf-wf-what-is-a-dependency-property/ zapewnia dobre wyjaśnienie właściwości zależności zarówno w kontekście WF, jak i WPF.
Fragment:
źródło