Beim Schreiben von WPF/Silverlight-Anwendungen habe ich manchmal Schwierigkeiten, wenn ich entscheiden muss, ob eine Eigenschaft in eine Formatvorlage aufgenommen oder direkt auf dem Element belassen werden soll. Welche Richtlinien verwenden Sie, wenn Sie entscheiden?
Antworten
Zu viele Anzeigen?Ich denke, dass es im Allgemeinen auf die Wiederverwendung des Stils und die allgemeine Projektorganisation ankommt.
Wenn es sich um einen Stil handelt, den Sie über viele verschiedene Elemente in einem Steuerelement (z. B. Pinsel) oder sogar in vielen verschiedenen Steuerelementen in Ihrem Projekt wiederverwenden wollen, werden Sie ihn natürlich in eine eigene Ressource auslagern wollen. Zur besseren Organisation werden Sie wahrscheinlich sogar diese gemeinsam genutzten Stile in eine eigene Ressourcendictionary-Datei packen wollen und die MergedDictionaries um sie in verschiedene Kontrollen zu ziehen. Sie können sogar einige ziemlich nützliche Kaskadeneffekte zwischen verschiedenen Stilen erstellen, indem Sie die BasedOn
auch das Attribut.
Wenn es sich nur um ein "einmaliges" Merkmal eines bestimmten Elements handelt, finde ich es in Ordnung, Stilattribute direkt am Element zu belassen. Wenn es nicht geteilt werden muss und der Stil einzigartig für das eine Element ist (spezifischer Rahmen, Rand usw.), ist es viel einfacher und lesbarer, ihn direkt auf dem Element zu halten.
Eine sehr gute Frage. Es gibt zwei Situationen, in denen ich eine Eigenschaft in einen Stil verschiebe.
1) Überfüllte Eigenschaften - Überfüllte Eigenschaften sind nichts anderes als zu viele Eigenschaften zum Anpassen eines Elements. Zum Beispiel. Wenn Sie einen Textblock haben und fast alle Eigenschaften anpassen möchten. Dann wird die Lesbarkeit beeinträchtigt. Das gilt auch, wenn es so etwas wie Auslöser hat. Dann wird es zu unübersichtlich. Zu diesem Zeitpunkt habe ich sie in einen Stil verschoben.
2) Wiederholt verwendete Stile - Dies ist der offensichtliche Fall, wenn ich einen gleichen Satz von Eigenschaften auf ein Steuerelement anwenden möchte. Normalerweise tun wir dies durch x:key
ou TargetType
.
HTH