2010-12-03 4 views

Antwort

3

Während die Antworten in Kishore Kumar Link so ziemlich Nagel, möchte ich hinzufügen, eine Sache: es gibt nicht wirklich so etwas wie eine "normale Eigenschaft". Eigenschaften sind eigentlich nur verdeckte Methodenaufrufe, und Sie können sie so implementieren, wie Sie es für richtig halten.

C# 3 hinzugefügt Auto-Eigenschaften, die Eigenschaften auf einem Feld zu implementieren, und ein Feld als Hintergrund speichern für eine Eigenschaft ist sicherlich ziemlich häufig. Während man so weit gehen kann, das "normal" zu nennen, gibt es nichts Besonderes an dieser Art von Eigentum. Soweit es die CLR betrifft, ist eine DP eine normale Eigenschaft: Sie stellt einen Getter und einen Setter auf die normale Weise bereit, was bedeutet, dass jede Sprache, die CLR-Eigenschaften versteht, die normale Eigenschaftensyntax beim Zugriff auf die Eigenschaft verwenden kann.

Es ist nicht so, dass eine einfache Feld-Backed-Eigenschaft die einzige gemeinsame Implementierung ist. Viele Klassen leisten zusätzliche Arbeit in ihren Eigentum Accessoren, um zum Beispiel INotifyPropertyChanged zu unterstützen. Aber es wäre seltsam zu sagen, dass dies keine "normalen" Eigenschaften sind.

In gewisser Weise ist ein DP nur eine der vielen Möglichkeiten, wie Sie eine normale Eigenschaft implementieren können.

So, um die Frage zu beantworten: Ja, es ist "möglich, alles durch normale Eigenschaften zu tun, welche Abhängigkeitseigenschaft tun kann", weil Sie nur eine Abhängigkeitseigenschaft als die Implementierung für Ihre normale Eigenschaft verwenden.

Wenn Sie jetzt möchten, dass Ihre Immobilie das gleiche Verhalten bietet, das eine EP bietet, ohne das DP-System in Ihrer Implementierung zu verwenden ... wäre das eine Menge Arbeit. Und in einigen Fällen wäre es nicht einmal möglich: Wenn Sie beispielsweise eine Eigenschaft haben wollen, die an einer TemplateBinding in einer ControlTemplate teilnehmen kann, dann muss es, soweit ich weiß, unbedingt eine DP sein. Wenn Sie jedoch DP-Funktionen ignorieren, die für WPF hochspezialisiert sind, können Sie das entsprechende Verhalten erneut erstellen. WPF ist schließlich nur Code. Wenn also WPF etwas tun kann, können Sie auch - Sie können Ihre eigene Version von WPF mit genügend Zeit und Ressourcen schreiben.

0

Grundsätzlich mit DPs erhalten Sie eine Menge von Ereignissen, die normale Eigenschaften nicht haben. Ich weiß, dass es mühsam ist, sie zu registrieren, aber sie sind ziemlich flexibel :)

Weitere Informationen in der Kishore der Link: p

0

Abhängigkeitseigenschaften sind sehr schwer zu Unit-Test, so sollte nicht in Viewmodels verwendet werden (wie einige Leute tun), aber nur in WPF UI-Kontrollen

Verwandte Themen