WPF / WF - Was ist eine Abhängigkeitseigenschaft?

Eine neue Art der Eigenschaft, eine so genannte Abhängigkeitseigenschaft, wurde mit der Veröffentlichung von .NET 3.0 auf das .Net Framework hinzugefügt. Abhängigkeitseigenschaften sind sowohl in Windows Presentation Foundation (WPF) und Workflow-Foundations (WF) verwendet. Sie sind sehr ähnlich in beiden Frameworks, sondern werden für verschiedene Zwecke verwendet.

Abhängigkeitseigenschaften bietet die Sanitär für Immobilienwertauflösung, Änderungsbenachrichtigung, Datenbindung, Styling, Validierung etc. Objekte ausgesetzt in Windows Presentation Foundation (WPF) UI-Elemente und Workflow-Foundations (WF) individuelle Aktivitäten. Jede Abhängigkeitseigenschaft ist mit einem zentralen Repository registriert, dass die Änderung Ereignisbenachrichtigungen für Sie übernimmt.

Key Point - Der Wert der Abhängigkeitseigenschaften aufgelöst

Das ultimative Ziel einer Abhängigkeitseigenschaft, wie jede Eigenschaft ist Staat zu verwalten. Aber im Gegensatz zu normalen .Net Eigenschaften wird der lokale Eigenschaftswert nicht in einer Instanzvariablen gespeichert.

Stattdessen Abhängigkeitseigenschaften werden mit der Abhängigkeitseigenschaft Rahmen registriert und der zugrunde liegende Immobilienwert wird aufgelöst - der Wert Bedeutung durch die Abhängigkeitseigenschaft Rahmen bestimmt wird, basierend auf Regeln, die von der Eigenschaft Registrierung definiert.

Wie man eine Abhängigkeitseigenschaft erstellen

Alle WPF UI-Elemente und Workflow-Aktivitäten werden von einer High-Level-Basisklassen genannt DependencyObject abgeleitet, die die grundlegende Funktionalität bieten erforderliche Abhängigkeitseigenschaften zu implementieren.

Als zeigt in dem Code gibt es zwei eine Abhängigkeitseigenschaft Schritte, die bei der Erstellung:

  1. Erstellen Sie ein statisches Feld ein DependencyProperty Objekt zu halten
    • Vereinbarungsgemäß soll das Feld mit dem normalen Eigenschaftsnamen, gefolgt von einem „Property“ Suffix benannt werden
    • Dieses Feld wird nicht den Wert der Eigenschaft enthält. Es definiert lediglich die Eigenschaft, dass mit dem Abhängigkeitssystem registriert ist,
    • Dieses Feld sollte als öffentlich definiert werden, statisch, Nur-Lese-Bereich
      • Die Eigenschaft muss jederzeit verfügbar sein, möglicherweise unter Klassen geteilt
      • Das Feld wird mit dem Nur-Lese-Schlüsselwort definiert, dh es kann nur im statischen Konstruktor des Typs eingestellt wird.
    • Das Feld muß mit einem Aufruf der statischen DependencyPropert.Register () Methode, Weitergabe instanziiert werden:
      • Der Name der Eigenschaft
      • Die Art der Immobilie
      • Die Art der Klasse, die die Eigenschaft besitzt
      • Optional verwendet, um Metadaten zu definieren, wie die Eigenschaft von dem WPF-Framework behandelt wird
        • Meta-Daten-Flags an, wie die Eigenschaft wirkt sich auf das Layout des Elements (AffectsMeasure, AffectsArrange, AffectsRender, etc.)
        • Rückrufe für den Umgang mit Eigenschaftswert ändert (PropertyChangedCallback)
        • Rückrufe benutzerdefinierten Wert Logik (CoerceValueCallback) zu definieren,
        • Rückrufe zu validieren Werte (ValidateValueCallback)
      • Optional verwendet, um Metadaten zu definieren, wie die Eigenschaft von dem WF Rahmen behandelt wird
        • Fügen Sie DependencyPropertyOptions Wert aufgezählt, um zusätzliche Eigenschaften für die Eigenschaft (Readonly, MetaDaten, etc.) angeben
  2. Erstellen Eigenschaftenaccessoren (get / set)
    • Rufen Sie DependencyProperty.SetValue () und GetValue () Methoden lokale Werte zu setzen
    • DependencyObject ist eine High-Level-Framework-Basisklasse für WPF UI-Elemente und WF-Aktivitäten
    • DependencyObject macht das GetValue () und SetValue () -Methoden

Ist das nicht eine Menge Code für eine Immobilie?

Auf den ersten Blick, ja, das sieht aus wie eine extrem komplizierte Art und Weise eine Eigenschaft zu erklären. OK, auf den zweiten Blick, es ist immer noch ziemlich komplex. Aber sobald man die Macht der Abhängigkeitseigenschaften bieten, vor allem in der Windows Presentation Framework (WPF) zu verstehen, werden sie eine willkommene Ergänzung zu Ihrer Codierung Toolbox werden.

Die Konvention dauert ein wenig gewöhnungsbedürftig. Aber nachdem man ein paar erstellt hat, kommt es ganz natürlich. Visual Studio enthält auch einige Schnipsel, um Abhängigkeitseigenschaften hinzu:

  • Insert Snippet > NetFX30 > Definieren Sie eine DependencyProperty
  • Insert Snippet > Andere > Arbeitsablauf > DependencyProperty > Eigentum

Subtle Differences Between in WPF und WF

Während WPF und WF beide eine ähnliche Abhängigkeitseigenschaft Frameworks verwenden, sind sie nicht identisch !!

WPF UI-Elemente und WF-Aktivitäten ergeben sich aus einer Basis DependencyObject-Klasse und eine DependencyProperty-Klasse verwenden, um Eigenschaften zu registrieren und erhalten / set Eigenschaftswerte. Trotz der gemeinsamen Namen, sind sie nicht die gleichen Klassen !!

  • DependencyObject und DependencyProperty Klassen von WPF residieren im System.Windows-Namespace
  • DependencyObject und DependencyProperty Klassen von WF residieren im System.Workflow.ComponentModel Namespace

Obwohl ihre Verwendung und Funktion sehr ähnlich sind, sind sie nicht direkt miteinander in Beziehung.

Wie werden die Abhängigkeitseigenschaft Werte gelöst?

Eigenschaftswerte für Abhängigkeitseigenschaften sind aufgelöst automatisch von Rahmen entsprechend der folgenden Rangordnung:

  1. Eigenschaftensystem Zwang
  2. Aktive Animationen oder Animationen mit einer Halte Verhalten (WPF)
  3. lokale Wert
  4. TemplateParent Template-Eigenschaften (WPF)
  5. Implizite Stil (WPF)
  6. Style-Trigger (WPF)
  7. Template-Trigger (WPF)
  8. Stil-Setter (WPF)
  9. Standard (Thema) Stil (WPF)
  10. Erbe
  11. Der Standardwert von Abhängigkeitseigenschaft Metadaten

Beachten Sie, dass der lokale Wert in der Rangordnung der 3. ist. Das bedeutet, dass eine Eigenschaft einen Wert haben kann, selbst wenn ein lokaler Wert für die Eigenschaft nie gesetzt. Auch wenn eine Eigenschaft einen lokalen Wert hat, kann die Bindung durch höhere Ebene Vorrang Elemente wie eine Animation oder Daten überschrieben werden.

Wann sollte ich verwenden Abhängigkeitseigenschaften in WPF?

Abhängigkeitseigenschaften sind eine der wichtigsten Konzepte in WPF. In WPF, werden Abhängigkeitseigenschaften erforderlich zu unterstützen:

  • Datenbindung
  • Animation
  • Styling
  • Wertausdrücke
  • Objektungültigkeits
  • Per-Typ Standardwerte

Kurz gesagt, ist es sinnvoll Abhängigkeitseigenschaften zu belichten jedes Mal, wenn eine Eigenschaft für ein benutzerdefinierte UI-Element oder Kontrolle aussetzen.

Wann sollte ich verwenden Abhängigkeitseigenschaften In WF?

Abhängigkeitseigenschaften sind nicht so stark in Workflow-Foundations (WF), wie sie in Windows Presentation Foundation (WPF), aber sie sind immer noch ein wichtiger Teil des WF-Framework verwendet. Sie werden in erster Linie verwendet, wenn benutzerdefinierte Workflow-Aktivitäten zu entwickeln, die Eigenschaften setzen die folgenden Szenarien zu unterstützen:


was ist wf

  • Was ist wf

Annonce: unsere Website ist eine Plattform für den Austausch von Fachwissen, nicht Domains Registrierung Organisation.

Definition: Ein Domain-Name ortet eine Organisation oder eine andere Einheit im Internet.