Mit ReSharper erhalten Sie zusätzliche Unterstützung bei der Bearbeitung von XAML-Dateien, wann immer Sie mit Anwendungen für die Universelle Windows-Plattform (UWP), WPF, Silverlight oder Windows Phone arbeiten. Dies beinhaltet eine Analyse der Codequalität in Echtzeit, Refaktorierungen, Codegenerierung und Neuanordnung sowie schnelle Navigation über die ganze Lösung hinweg.
Mit Funktionen zur Analyse der Codequalität hilft Ihnen ReSharper, Fehler in Ihren XAML-Dateien schnell zu finden und zu beheben. Sehen wir uns anhand einiger Beispiele an, wie das funktioniert.
Nehmen wir an, Sie arbeiten an einem WPF-Projekt, bei dem nur XAML 2006 erlaubt ist. Wenn ReSharper auf
ein generisches Objekt gemäß XAML 2009 trifft, hebt es das Objekt als Sprachfehler hervor. Wenn Sie im hervorgehobenen Code Alt+Enter drücken,
dann zeigt ReSharper einen Quick-Fix an, der vorschlägt, einen von
System.Collections.Generic.List<string>
vererbten Typ zu deklarieren.
Wenn Sie den Quick-Fix anwenden, wird ReSharper:
List
abgeleiteter Wrappertyp deklariert ist. TypeArguments
löschen,
den Typ des Objekts zum neuen Wrappertyp ändern und gegebenenfalls eine neue Namespace-Anweisung
einfügen. Wenn Sie eine Ressource verwenden, die noch nicht deklariert wurde, dann werden Sie von ReSharper durch eine Fehler-Hervorhebung daran erinnert.
Wenn Sie Alt+Enter drücken, schlägt ReSharper mehrere mögliche Standorte für die Erstellung der fehlenden Ressource vor.
Wenn der Typ der generierte Ressource noch nicht deklariert wurde, kein Problem: ReSharper bietet Ihnen
an, entweder einen CLR-Typ oder einen XAML-Typ (d. h. ein UserControl
)
anhand der Verwendung zu erstellen. Durch das Auswählen einer der beiden Optionen wird eine Datei mit der standardmäßigen Implementierung erstellt.
Wird ein Kommentar fälschlicherweise in einem Element platziert, hebt wird ReSharper dieses hervor und bietet Optionen zur Behebung des Fehlers an.
Für den Fall, dass ein TargetType
für einen Style Setter definiert wurde,
erkennt ReSharper Redundanzen in Typqualifizierern und bietet einen Vorschlag zur Behebung an.
Sie können die ReSharper-Codevervollständigung auch bei XAML-Tags nutzen. Die Unterstützung für CamelHumps hilft beim schnellen Hinzufügen von Attributen: Geben Sie einfach ein paar Zeichen ein und drücken Sie Strg+Leertaste, um relevante Vorschläge aus der Symbolvervollständigung von ReSharper zu erhalten.
Wenn Sie mit Strg+Alt+Leertaste die Intelligente Vervollständigung aufrufen, bietet ReSharper zusätzliche kontextabhängige Optionen für die entsprechende Codestelle an. Wenn Sie zum Beispiel die intelligente Vervollständigung bei einer Ereignishandlerdeklaration aufrufen, dann bietet Ihnen ReSharper an, die Handlermethode zu generieren.
Durch die Verwendung der intelligenten Vervollständigung innerhalb eines Attributs können Sie schnell eine neue Ressource (statisch oder dynamisch), ein Binding oder eine Referenz auf ein statisches Element erstellen.
Ein weiterer aufregender Vorteil der Codevervollständigung von ReSharper ist, dass sie Farben für
Pinsel anzeigt, die in Attributen wie Background
oder
OpacityMask
erwartet werden.
ReSharper unterstützt auch in XAML die Import-Symbolvervollständigung. Das bedeutet, dass Sie Typen aus Assemblies vervollständigen können, die in Ihrer Lösung referenziert werden, aber keine entsprechenden Namespace-Importanweisungen in der aktuellen Datei haben.
Natürlich wird bei einer solchen Verwendung der ReSharper-Codevervollständigung die erforderliche Namespace-Importanweisung automatisch eingefügt.
Alternativ bietet ReSharper Ihnen an, schnell die Namespace-Anweisung zu erstellen, wenn Sie einen Typ in einer XAML-Datei haben, der aus irgendeinem Grund nicht importiert wurde.
Das ReSharper-Menü Navigate To funktioniert bei XAML-Codeelementen genauso wie bei C#-Codedateien. Beim Drücken von Alt+` auf einer Symboldeklaration oder -verwendung wird ein Menü mit mehreren möglichen Navigationszielen geöffnet.
Die Navigation per Go To File Member funktioniert in XAML-Dateien genauso wie in C#-Dateien. Sie können damit zu einem Element mit einem bestimmten Typ, Namen oder Schlüssel navigieren. Auch hier brauchen nicht den ganzen Namen einzugeben – durch die Unterstützung für klein geschriebene CamelHumps
können Sie zum Beispiel WatchList
durch das Eingeben von wl
finden.
Wenn Sie Strg+Alt+F7 in einer XAML-Datei drücken, erhalten Sie eine Liste aller zugehörigen Dateien: zum Beispiel die Code-Behind-Datei, alle Ressourcen, die in der aktuellen XAML-Datei referenziert werden, oder Bilder, die in Ihren Steuerelementen verwendet werden.
Auch Go to Declaration (F12) und die Navigation per Strg-Klick funktionieren in einer XAML-Datei genauso wie in einer gewöhnlichen C#-Codedatei. Wenn Sie zum Beispiel mit gedrückter Strg-Taste auf den Namen einer bestimmten Klasse zeigen, unterstreicht ReSharper den Klassennamen, und durch Anklicken des Links können Sie direkt zur Klassendefinition springen.
Ebenso wie bei Codedateien zeigt das Fenster File Structure die Struktur der XAML-Datei an und lässt Sie schnell zum gesuchten Codeelement navigieren.
Mit dem Befehl Find Usages (Umschalt+F12) können Sie nach den Verwendungen eines bestimmten XAML-Elementes suchen. ReSharper zeigt alle Stellen an, an denen das Element verwendet wird.
Sie können auch Umschalt+Alt+F11 drücken, um die Verwendungen hervorzuheben. Das gibt Ihnen einen schnellen Überblick über die Stellen, an denen ein bestimmtes Symbol in der aktuellen Datei verwendet wird.
Die Erstellung von Abhängigkeitseigenschaften kann fürchterlich langweilig sein. Auch für dieses Problem hat ReSharper eine Lösung: Seine leistungsstarke Codevorlagen-Engine ermöglicht das Erstellen zielgenauer Snippets, aus denen Sie mit wenigen Tastendrücken Abhängigkeitseigenschaften generieren können. Tippen Sie einfach den Namen der Live-Vorlage in den Editor ein, und Sie erhalten eine Eigenschaft mit der dazugehörigen Abhängigkeitseigenschaft. Die intelligente Codevervollständigung steht Ihnen für alle Platzhalter zur Verfügung, die Sie ausfüllen müssen.
Auf die gleiche Weise können Sie ReSharper anweisen, angefügte Eigenschaften zu generieren, die normalerweise noch mühseliger sind als reguläre Abhängigkeitseigenschaften. Bei Verwendung der Live-Vorlage können Sie die verschiedenen Variablen durchgehen und dabei die Codevervollständigung von ReSharper nutzen.
Live-Vorlagen für Abhängigkeitseigenschaften und angefügte Eigenschaften sind zwar derzeit nicht standardmäßig in ReSharper integriert, aber Sie können sie herunterladen und importieren.
ReSharper bietet verschiedene Kontextaktionen, die das Arbeiten mit der XML-Syntax vereinfachen und auch für XAML verwendet werden können. So können Sie zum Beispiel Tagnamen ändern, ein Attribut in ein geschachteltes Element konvertieren oder einen Tag entfernen und dessen Kinder eine Ebene nach oben befördern.
Es gibt auch über ein Dutzend XAML-spezifische Kontextaktionen. Mit diesen können Sie Spalten- oder Zeilendefinitionen hinzufügen oder entfernen, Ansichten und Ressourcen erstellen, zwischen verschiedenen Arten von Ressourcenreferenzen hin- und herschalten, Eigenschaftensetter zu Stilen extrahieren und vieles mehr.
Da XAML-Elemente prinzipiell äquivalent zu gewöhnlichen Klassenmembern sind, funktionieren einige der C#-Refaktorierungen auch in XAML. Zum Beispiel können Sie eine Ressource umbenennen oder sicher löschen, indem Sie einfach das Menü Refactor This öffnen.
Wenn Sie über einen Verweis zu einer Eigenschaft oder Methode in XAML navigieren, dann können Sie im Menü Refactor This dieselben Refaktorierungen nutzen, die bei einem Aufruf des Menüs in C#- oder VB.NET-Code zur Verfügung stehen.
Zusätzlich zu den C#- und VB.NET-Refaktorierungen gibt es auch einige XAML-spezifische Refaktorierungen:
Es ist eine übliche Situation in XAML, Inline-Stile für mehrere Steuerelemente zu definieren und diese dann in eine Stildefinition zu verschieben. ReSharper macht diese Operation mithilfe der Refaktorierung Extract Style spielend einfach.
Das Dialogfeld, das für diese Refaktorierung erscheint, hilft Ihnen bei der Entscheidung, zu welcher Ressource die Eigenschaften extrahiert werden sollen (Sie können eine bestehende Resource auswählen oder eine neue erstellen) und welche Eigenschaften Sie extrahieren wollen.
Mit den Refaktorierungen Extract Resource und Inline Resource können Sie praktische jede Eigenschaftenzuweisung (sogar in Markup-Erweiterungen) zu einer Ressource verschieben – und wieder zurück: Sie können eine Definition aus einer Ressource entnehmen und direkt in das Element einfügen.
Mit den ReSharper-Funktionen zum Umsortieren von Code können Sie Elemente innerhalb einer XAML-Datei oder sogar Attribute innerhalb dieser Elemente verschieben. Beide Operationen werden durch das Drücken der Tastenkombination Strg+Alt+Umschalt und der Pfeiltasten durchgeführt.
Wenn Sie mit Attributen arbeiten, können Sie mit diesen Tastenkombinationen die Attribute innerhalb des Tags verschieben: Die Pfeiltasten Links und Rechts ändern die Position des Attributs. Die Pfeiltasten Auf- und Ab wiederum wirken sich auf den gesamten Tag aus.
Mit Auf und Ab ändern Sie die Position des gesamten Tags in Bezug auf andere Tags. Wenn Sie mit Strg+Alt+Rechts die Auswahl auf ein Tag und dessen gesamten Inhalt erweitern, dann haben auch die Pfeiltasten Links und Rechts den gleichen Effekt, mit dem einzigen Unterschied, dass diese Tastenkombinationen Ihre Auswahl in der Taghierarchie nach unten verschieben können, indem die Auswahl in jedes Tag hinein verschoben wird, auf das Sie beim Verschieben treffen.
Alle auf dieser Seite angegebenen Tastenkürzel sind in der standardmäßigen "Visual Studio"-Tastaturbelegung von ReSharper verfügbar. Weitere Informationen zu den beiden Tastaturbelegungen von ReSharper finden Sie in der ReSharper-Dokumentation.