Frage

Was ist eine Abhängigkeitseigenschaft in .NET (insbesondere im WPF -Kontext). Was ist der Unterschied von der regulären Immobilie?

War es hilfreich?

Lösung

Abhängigkeitseigenschaften sind Eigenschaften von Klassen, die aus AbhängigkeitsObject abgeben, und sie sind insbesondere in diesem Bereich, anstatt nur ein Hintergrund zu verwenden, um ihren Wert zu speichern, und verwenden einige Helfermethoden für DependyCoBject.

Das Schönste an ihnen ist, dass sie alle integrierten Datenbindungen für Datenbindung haben. Wenn Sie etwas an sie binden, werden sie es benachrichtigen, wenn sie sich ändern.

Andere Tipps

Die einzige Erklärung, die ich hilfreich und gut geschrieben habe, ist die folgende: http://www.wpftutorial.net/dependencyproperties.html

Grundsätzlich unterscheiden sich die Abhängigkeitspropertien von den regulären Eigenschaften darin, dass sie nicht nur Setter / Getter für Felder in der Klasse sind, sondern ihre tatsächlichen Werte während der Laufzeit dynamisch abrufen. Das SetValue() Die Methode von DPS ist ziemlich einfach und setzt den lokalen Wert der Eigenschaft auf den von Ihnen angegebenen Wert. Wenn Sie es jedoch versuchen, GetValue() Aus einer Abhängigkeitspflicht wird zunächst nach einem lokalen Wert suchen, wenn keine vorhanden ist (was in Abhängigkeitspropertien im Gegensatz zu regulären Eigenschaften lebensfähig ist), wird der logische UI -Baum fortgesetzt, bis er einen solchen Wert findet. Wenn das Framework die Oberseite des Baumes erreicht hat, ohne lokale Werte zu finden, verwendet er einen vordefinierten Standardwert als Wert der Eigenschaft.

Mit dieser Methode können Abhängigkeitsproperties weniger Speicher als reguläre Eigenschaften konsumieren, da nur Werte, die vom Benutzer explizit festgelegt wurden, lokal gespeichert werden.

Und wie oben erwähnt, ermöglichen Abhängigkeitspropertien auch, sie im XAML -Code an sie zu binden und Auslöser auf sie festzulegen, die auf regulären Eigenschaften nicht zulässig sind.

Ich hoffe, ich habe es geschafft, etwas Vage zu klären :)

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 im WPF.

Ein Ausschnitt:

Schlüsselpunkt - Der Wert der Abhängigkeitseigenschaften wird behoben

Das ultimative Ziel einer Abhängigkeitseigenschaft ist wie jede Immobilie, den Staat zu verwalten. Im Gegensatz zu normalen .NET -Eigenschaften wird der lokale Eigenschaftswert jedoch in einer Instanzvariablen nicht gespeichert.

Stattdessen werden Abhängigkeitseigenschaften beim Abhängigkeitseigenschaftsframework registriert, und der zugrunde liegende Eigentumswert wird behoben - was bedeutet, dass der Wert durch das Abhängigkeitseigenschaftsframework auf der Grundlage von Regeln ermittelt wird, die durch die Registrierung der Eigenschaft definiert sind.

Erläuterung ohne Code über Analogie (~ 5 min)

Wenn Sie keine Geschichten mögen, retten Sie sich (~ 5 Minuten)

Wir müssen ein paar Konzepte durchmachen:

  • Wertauflösung auf dem Baum- / Eigenschaftswert -Vererbung und der Vererbung
  • Support für Multi-Anbieter
  • Benachrichtigungen ändern

(a) Vererbung der Wertauflösung / Eigenschaftswertwert

Verwenden wir das Beispiel menschlicher Gene, um das Konzept zu erklären.

Jeder ist mehr oder weniger gleich

Menschen haben viele Informationen damit verbunden. Unzählige Hunderte und Tausende von Daten sind mit Ihnen verbunden -

  • Wie viele Finger hast du,

  • Wie viele Zehen,

  • Wie viele BRCA2 -Gene haben Sie usw.

Was ist das Problem, das wir lösen wollen?

Wir möchten in der Lage sein, Menschen, die uns nach uns selbst fragen, direkte Antworten zu geben, ohne all diese Informationen umzugehen.

Die Frage ist also: Wie können Sie sich an all das erinnern? Nun, ursprünglich haben die Leute angefangen, all dieses Zeug niederzuschreiben, aber bald stellten sie fest, dass sie die gelben Seiten rund 10 Bände tragen mussten Beantworten Sie all diese Fragen: Das ist zu viel Zeug, um herumzuschleppen.

Lösung: Speichern Sie gemeinsame Informationen an einem Ort

Also hatte jemand eine helle Idee. Sie stellten fest, dass die Informationen die meiste Zeit gleich sind. z. B. die meisten Menschen haben:

  • ein Herz

  • ein Gesicht usw.

  • Drei BRCA2 -Gene

Es ist nicht erforderlich, dass jede einzelne Person etwa 30 Pfund Papier in der Gesäßtasche trägt. Sie können all diese Informationen in speichern ein Platz, in einer eine Zentralbibliothek. Die Menschen wären frei, ohne durch das Tragen dieser Informationen belastet zu werden.

Aber es gibt immer Ausnahmen ... nicht jeder hat die gleiche Blutgruppe oder die gleiche Anzahl von Haarfollikeln auf dem Kopf. Wenn es Unterschiede oder Ausnahmen von der Norm gibt, würden Sie diese Ausnahmen einfach mit Ihnen in Ihrer Gesäßtasche (dh in einem Wörterbuch) und nicht in einem ganzen Buchregal mit Büchern tragen. Denken Sie daran, größtenteils sind die Menschen sehr gleich - sie teilen die gleichen Werte und dies ändert sich selten. Wenn Sie keine Ausnahmen in Ihrer Gesäßtasche haben, können Sie den Interviewer einfach auf die im gemeinsamen Repository gespeicherten Daten verweisen.

Beispiel: Reporterinterviews Präsident Donald Trump **

Versuchen wir dies mit einem Beispiel.

Wir haben eine Instanz von Person: Donald Trump. Ein Nachrichtenreporter stellt unserem geschätzten Präsidenten einige Fragen:

"Herr Präsident Trump, wie viele HIF1A -Gene haben Sie?"

Der Don überprüft seine Gesäßtasche. Es ist nichts darüber aufgeführt, wie viele Gene er hat. Also erzählt er dem Reporter einfach, dass er die Standardnummer hat, die alle anderen haben. "Wie alle anderen", sagt Trump. "Sie können Ihre Antwort in der Bibliothek finden". Der Reporter geht also einfach in die Bibliothek, um sich über dieses bestimmte Detail zu informieren.

„Herr Präsident Trump, wie viele Gesichter haben Sie?

Kann dieser Wert lokal gelöst werden? Sieht so aus, als würde dieser Wert lokal gelöst, da in Trumps Gesäßtasche die Antwort liegt: 2 - was sofort an den Reporter zurückgegeben wird.

Wertauflösung auf einem Baum

In Wirklichkeit sind die Dinge etwas komplizierter als eine Antwort, die entweder in der Gesäßtasche oder auf andere Weise in einer Zentralbibliothek gehalten wird. Es gibt viele Zwischenplätze, die dieselben Informationen speichern könnten und daher ideale Kandidaten für "den Wert der Eigenschaft" wären. Die Dinge beginnen also in der Gesäßtasche, dann muss der Reporter möglicherweise eine ganze Reihe von Zwischenplätzen in aufsteigender Reihenfolge überprüfen, um die Antwort zu erhalten. ZB Der Reporter kann mit anderen Zeitungen beginnen, dann mit Gerichtsdokumenten, und wenn keine Antwort gefunden wird, ist die Antwort der in der Zentralbibliothek enthaltene Standardwert.

Um es zu vereinfachen, werden die Dinge zunächst mit der Person und dann immer höhere Behörden nach oben gelöst: Schließlich enden Sie schließlich entweder mit Gott oder dem Spaghetti -Monster. Dann werden Sie immer höher und höher, bis Sie eine Antwort erhalten. Am Ende werden alle Antworten gelöst.

Zusammenfassung

Kurz gesagt, eine Abhängigkeitseigenschaft ist eine Eigenschaft, die entweder lokal oder den UI -Baum aufgelöst wird. Der Grund, warum wir dies tun, ist, dass UI -Elemente Hunderte und Hunderte von Eigenschaften haben, die bald Ihr Gedächtnis auffressen würden, wenn Sie sie als Backing -Felder für jeden einzelnen von ihnen aufbewahren würden. Da sich die meisten dieser Felder nie oder sehr selten ändern, müssen sie nicht als Backing -Felder gespeichert werden und ihre Werte können durch den Baum aufgelöst werden.

Schließlich erhalten Sie kostenlos automatische Änderungsbenachrichtigungen.

Zugegeben, die Analogie ist etwas angespannt, aber ich hoffe, dass es hilfreich ist.

** wartete immer noch auf die (Feuer-) Wand, die Trump versprach. Müssen die Spamikaner fernhalten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top