DependencyProperty musi być statyczne (poziom klasy) ponieważ podczas tworzenia wielu obiektów tej klasy, który ma tę właściwość i chcą odnieść wartość domyślną dla tej właściwości wartość musi pochodzić z tej statycznej instancji DependencyProperty. Tak więc domyślna wartość dla wszystkich wystąpień naszej klasy jest taka sama i system nie rezerwuje pamięci dla DependencyProperty na każdym wystąpieniu tej klasy. W ten sposób zmniejsza się ślad pamięci.
Teraz następne pytanie powstać co jeśli jawnie ustawić wartość na DependencyProperty dla obiektów klasy. (Według kodu lub przez animację lub przez Style)
W tym przypadku DependencyObject wchodzi zdjęcie. Każda klasa, która ma DependencyProperty musi pochodzić z klasy DependencyObject (klasa specyficzna dla WPF, która przechowuje kolekcję o nazwie EffectiveValues ). Gdy użytkownik ustawi wartość DependencyProperty o wartości jawnie na obiekcie klasy (według kodu lub według animacji lub stylu), wartość jest przechowywana w tej kolekcji EffectiveValues, która znajduje się w klasie DependencyObject i tam jest przechowywana.
możliwy duplikat [Niestacjonarnych właściwości zależności] (http://stackoverflow.com/questions/3660696/non-static-dependency-properties) –
Wyjaśnienie w odpowiedzi na powyższe pytanie jest dość podstawowe, proszę zapoznaj się z podstawami, a następnie możemy debatować, czy ograniczenia są ważne. –
@ M.Babcock: To właśnie powiedziałem w opisie, że widziałem już kilka wyjaśnień, ale które nie są wyczerpujące. Widziałem już link, który podałeś przed napisaniem mojego pytania tutaj, a także, jak również widziałem to http://stackoverflow.com/questions/2989431/why-are-dependency-properties-static – Learner