Modello di controllo per controlli esistenti in WPF

Come ottenere il controllo control esistente in WPF in formato XAML (albero visivo)? Questo è per aiutare a creare nuovo controltemplate con l’aiuto del modello esistente.

Gli stili insieme agli esempi di template sono disponibili su MSDN per il download, vedi il link Default WPF Themes .

Tuttavia, puoi anche estendere lo stile esistente senza ridefinire tutto usando l’attributo BasedOn .

Dai un’occhiata a StyleSnooper :

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

Scaricherà gli stili standard (e quindi anche i modelli) per i controlli integrati. È inoltre ansible caricare in una DLL specifica che contiene controlli WPF e visualizzare gli stili predefiniti anche per quelli.

Se hai Expression Blend puoi:

  1. Trascina il controllo sulla superficie del disegno
  2. Fare clic con il tasto destro sul controllo e selezionare Modifica modello -> Modifica copia

Quando lo fai, Blend estrae il modello di base dal controllo e lo dichiara esplicitamente all’interno di documento / applicazione come una risorsa che puoi modificare a tuo piacimento. Puoi farlo per qualsiasi controllo.

Il libro “Pro WPF in C # 2008”, di Matthew MacDonald, include un browser dei modelli di controllo nel Capitolo 15. Credo che si possa semplicemente scaricare il codice di esempio dal sito web di Apress.

Puoi usare uno strumento come ShowMeTheTemplate

Usa Microsoft Blend per questo: incolla l’intero codice XAML in un file con questo strumento e fai clic con il pulsante destro sul controllo di cui visualizzi l’albero visivo:

Seleziona l’opzione: Modifica modello e lì vai

La class XamlWriter ti offre questa funzionalità. Se controlName è il nome di un controllo, utilizzando lo snippet sottostante si ottiene l’Xaml del modello di controllo all’interno dell’object stringBuilder . Immagino che gli strumenti menzionati nelle risposte utilizzino questa class.

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