2010-11-27 18 views
1

Ich bin relativ neu in der WPF-Szene, und habe ein Problem zu verstehen, wie Stile zwischen den Kontrollen wiederverwendet werden.WPF Style Reuse

Meine Beispiel Situation ist dies, ich mache ein Steuerelement, das eine Toggle-Taste benötigt. Ich möchte, dass dieser ToggleButton wie der 'expand'-Button eines TreeViewItems aussieht. Wie würde der Button-Stil des TreeViewItem auf meine eigene Schaltfläche angewendet?

Von meiner Suche habe ich das Gefühl, dass es nicht möglich ist, ohne XAML zu kopieren, aber ich kann mir nicht rechtfertigen, warum irgendjemand einen UI-Rahmen machen würde, der begrenzt.

Vielen Dank im Voraus.

Antwort

2

Ich bin mir nicht sicher, gibt es eine Möglichkeit zum Abrufen der Standardvorlage/Vorlage von etwas und die Anwendung auf ein anderes Steuerelement in XAML, obwohl Sie möglicherweise in der Lage, es in Code. Obwohl das das Problem darstellen würde, dass Sie nur den Button-Teil der Vorlage bekommen möchten und es einfacher ist (um nicht zu sagen sauberer) nur einen neuen Stil zu schreiben, anstatt herumzuhacken, um nur diesen Teil der Vorlage zu bekommen.

Das Problem mit den neu gestalteten Schaltflächen besteht darin, dass sie beim Drücken auf die Standardanzeige zurückgehen, wenn sie gedrückt werden. Was Sie tun möchten, ist das ControlTemplate der Schaltfläche zu ändern.

Als ich in WPF begann, fand ich this tutorial , um eine recht nützliche Einführung in den Prozess zu sein.

Ich würde empfehlen, eine Kopie von ShowMeTheTemplate zu erhalten, um Ihnen Zugriff auf die meisten Standardvorlagen für Steuerelemente zu geben, da dies eine Menge der grundlegenden Arbeit spart und Ihnen einen Einblick in die Funktionsweise der Steuerelemente gibt.

Wenn Sie Ihre Steuerelementvorlage (oder einen beliebigen Stil/eine Vorlage) erstellt haben, können Sie sie in einem Ressourcenwörterbuch speichern und auf Steuerelemente anwenden, indem Sie sie mit der StaticResource-Markuperweiterung auf die entsprechende Eigenschaft verweisen.

Beispiel:

(In einem Ressourcenverzeichnis, zum Beispiel App.Resources):

<Style x:Key="myStyle" TargetType="Button"> 
    <Setter Property="Width" Value="70" /> 
</Style> 

in einer Schaltfläche verwendet:

<Button Style="{StaticResource myStyle}" /> 

hoffe, das hilft Ihnen den Start.

+0

Danke für Ihre Antwort! Der Hinweis zu showMeTheTemplate ist hilfreich. Ich finde es merkwürdig, dass sie in einer für MVVM entwickelten Umgebung nicht einmal daran gedacht haben, Stil und Markup zu trennen ... –