Odpowiedzi:
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. PlikSetValue()
Metoda PRR jest dość prosta i ustawia lokalną wartość nieruchomości do wartości Ci go dał. Jednak gdy spróbujesz GetValue()
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 :)
Grid.Row="1"
na a Button
ustawi go na wiersz nr 2 w obiekcie nadrzędnym Grid
(ze względu na fakt, że wiersze są liczone od zera), ale Row
DependencyProperty należy do Grid
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ś po Value
zmianie na 1. Będziesz mógł to zrobić używając DataTrigger
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:
Kluczowy punkt - rozwiązano wartość właściwości zależności
Ostatecznym celem właściwości zależności, jak każdej innej właściwości, jest zarządzanie stanem. Jednak w przeciwieństwie do zwykłych właściwości .Net, lokalna wartość właściwości nie jest przechowywana w zmiennej instancji.
Zamiast tego właściwości zależności są rejestrowane w strukturze właściwości zależności, a podstawowa wartość właściwości jest rozpoznawana - co oznacza, że wartość jest określana przez strukturę właściwości zależności na podstawie reguł zdefiniowanych przez rejestrację właściwości.