Wenn ich zwei 200 Zeilen lange Kontrollvorlagen habe, die sich nur in wenigen Worten unterscheiden (ein paar Farben), wie kann ich die XAML wiederverwendbar machen? Das heißt, Sie müssen die Vorlage nicht kopieren und einfügen und 3 Wörter in 200 Zeilen ändern.
Hier ist ein vereinfachtes Beispiel. Der einzige Unterschied zwischen den beiden Stilen ist die Rahmenfarbe. Kann ich also irgendwie einen ButtonStyle mit einer parametrisierten Farbe definieren und BlackButtonStyle und GrayButtonStyle von ihm erben und nur diese Farbe in BlackButtonStyle und GrayButtonStyle angeben?
Alternativtext http://img444.imageshack.us/img444/9545/buttonstyles.png
%Vor%Hier ist der Code basierend auf den 2 Antworten. Nur ein Stil muss auf dem Steuerelement festgelegt werden, aber leider vermasselt es immer noch das Tag des Steuerelements:
%Vor% Während Charlie mit seinem Beispiel Recht hat, würde ich für Ihren speziellen Fall einfach die Eigenschaften BorderThickness
und BorderBrush
verwenden, die eine Schaltfläche bereits enthält: Sie können {TemplateBinding BorderBrush}
verwenden, anstatt eine eigene Eigenschaft zu erstellen.
Bearbeiten: Beispiel XAML ... Beachten Sie, dass mein Stil standardmäßig die Farbe & amp; Dicke, aber diese könnten inline überschrieben werden ...
%Vor% Der richtige Weg, um dies zu tun, ist in der Regel ein DependencyProperty
für die Klasse zu erstellen, die die parametrisierten Daten enthalten kann, und dann an diese Eigenschaft in Ihrer Vorlage zu binden. Um ein schnelles Beispiel zu schaffen, verwende ich die Button.Tag
-Eigenschaft, die perfekt zum Speichern von etwas so einfach wie ein Pinsel funktioniert:
Schauen Sie sich diese Lösung an Es löst genau das Problem, das Sie haben.
Tags und Links wpf