Steuerelementvorlage für vorhandene Steuerelemente in WPF

Wie bekomme ich die Kontrollvorlage in WPF im XAML-Format (visual tree)? Dies ist hilfreich, um mithilfe der vorhandenen Vorlage ein neues Steuerelement zu erstellen.

Die Stile zusammen mit den Vorlagenbeispielen finden Sie auf MSDN zum Herunterladen. Informationen hierzu finden Sie im Default WPF Themes .

Sie können jedoch auch den vorhandenen Stil erweitern, ohne alles neu zu definieren, indem Sie das Attribut BasedOn .

Schauen Sie sich StyleSnooper an :

http://www.blogs.intuidev.com/image.axd?picture=2010/5/StyleSnooper_TN.png

Es wird die Standardstile (und damit auch die Vorlagen) für die eingebauten Steuerelemente ausgeben. Sie können auch eine bestimmte DLL laden, die WPF-Steuerelemente enthält, und die Standardstile für diese anzeigen.

Wenn Sie Expression Blend haben , können Sie:

  1. Ziehen Sie das Steuerelement auf die Entwurfsoberfläche
  2. Klicken Sie mit der rechten Maustaste auf das Steuerelement und wählen Sie Vorlage bearbeiten -> Kopie bearbeiten

Wenn Sie dies tun, wird Blend die Basisvorlage aus dem Steuerelement extrahieren und explizit in Dokument / Anwendung als eine Ressource deklarieren, die Sie dann nach Ihren Wünschen bearbeiten können. Sie können dies für jede Kontrolle tun.

Das Buch “Pro WPF in C # 2008” von Matthew MacDonald enthält einen Control Template-Browser in Kapitel 15. Ich glaube, Sie können den Beispielcode einfach von der Apress-Website herunterladen.

Sie können ein Tool wie ShowMeTheTemplate verwenden

Verwenden Sie Microsoft Blend dafür: Fügen Sie Ihren gesamten XAML-Code in eine Datei in diesem Tool ein und klicken Sie mit der rechten Maustaste auf das Steuerelement, dessen visuelle Struktur Sie wahrnehmen möchten:

Wählen Sie die Option: Vorlage bearbeiten und los gehts

Die XamlWriter-class bietet Ihnen diese functionalität. Wenn controlName der Name eines Controls ist, dann wird mit dem folgenden Snippet der Xaml der Control’s Template innerhalb des stringBuilder Objekts stringBuilder . Ich nehme an, dass die in den Antworten erwähnten Tools diese class verwenden.

 var stringBuilder = new StringBuilder(); var xmlSettings = new XmlWriterSettings { Indent = true }; using (var xmlWriter = XmlWriter.Create(stringBuilder, xmlSettings)) { XamlWriter.Save(controlName.Template, xmlWriter); }