Antworten:
Abhängigkeitseigenschaften sind Eigenschaften von Klassen, die von DependencyObject abgeleitet sind, und sie sind insofern besonders, als sie nicht nur ein Hintergrundfeld zum Speichern ihres Werts verwenden, sondern einige Hilfsmethoden für DependencyObject verwenden.
Das Schönste an ihnen ist, dass sie alle Installationen für die Datenbindung eingebaut haben. Wenn Sie etwas an sie binden, werden sie es benachrichtigen, wenn sie sich ändern.
Die einzige Erklärung, die ich hilfreich und gut geschrieben fand, ist diese: http://www.wpftutorial.net/dependencyproperties.html
Grundsätzlich unterscheiden sich DependencyProperties von regulären Eigenschaften darin, dass sie nicht nur Setter / Getter für Felder in der Klasse sind, sondern ihre tatsächlichen Werte zur Laufzeit dynamisch abrufen. Die SetValue()
Methode von DPs ist ziemlich einfach und setzt den lokalen Wert der Eigenschaft auf den Wert, den Sie ihr gegeben haben. Wenn Sie jedoch versuchen, GetValue()
von einer DependencyProperty aus einen lokalen Wert zu ermitteln, wird zunächst nach einem lokalen Wert gesucht. Wenn keiner vorhanden ist (was in DependencyProperties im Gegensatz zu regulären Eigenschaften möglich ist), wird der logische UI-Baum fortgesetzt, bis ein solcher Wert gefunden wird. Wenn das Framework den oberen Rand des Baums erreicht hat, ohne lokale Werte zu finden, wird ein vordefinierter Standardwert als Wert für die Eigenschaft verwendet.
Mit dieser Methode kann DependencyProperties weniger Speicher als reguläre Eigenschaften belegen, da nur Werte gespeichert werden, die vom Benutzer explizit festgelegt wurden.
Wie oben erwähnt, können wir mit DependencyProperties auch im XAML-Code an sie binden und Trigger für sie festlegen, was bei regulären Eigenschaften nicht zulässig ist.
Ich hoffe, ich habe es geschafft, etwas von der Unbestimmtheit zu beseitigen :)
Grid.Row="1"
a Button
wird festgelegt, dass es sich in Zeile 2 des übergeordneten Elements befindet Grid
(aufgrund der Tatsache, dass Zeilen auf Null basieren), aber die Row
DependencyProperty gehört zum Grid
Objekt.
DependencyProperties also allow us to bind to them in the XAML code and set triggers on them, which on regular properties is not allowed
, dass sowohl das Binden in XAML als auch das Setzen von Triggern oder das Setzen von Triggern nicht zulässig ist? Vielen Dank für das Follow-up und die Hilfe, um die Dinge klarer zu machen!
Value
Eigenschaft (nicht DP) mit dem Wert 0 , und Sie möchten Ihre Ansicht , etwas zu tun , wenn Value
Änderungen 1. hast du die Möglichkeit, dies zu tun mit DataTrigger
und Einstellung derBinding={Binding Path=Value, Value=1}
http://techpunch.wordpress.com/2008/09/25/wpf-wf-what-is-a-dependency-property/ bietet eine gute Erklärung der Abhängigkeitseigenschaften sowohl im Kontext von WF als auch von WPF.
Ein Ausschnitt:
Schlüsselpunkt - Der Wert der Abhängigkeitseigenschaften wird aufgelöst
Das ultimative Ziel einer Abhängigkeitseigenschaft ist, wie bei jeder Eigenschaft, die Verwaltung des Status. Im Gegensatz zu normalen .Net-Eigenschaften wird der lokale Eigenschaftswert jedoch nicht in einer Instanzvariablen gespeichert.
Stattdessen werden Abhängigkeitseigenschaften im Rahmen der Abhängigkeitseigenschaften registriert und der zugrunde liegende Eigenschaftswert wird aufgelöst. Dies bedeutet, dass der Wert vom Rahmen der Abhängigkeitseigenschaften basierend auf den durch die Eigenschaftsregistrierung definierten Regeln bestimmt wird.