Parametrisierter Stil / Vorlage in WPF?

8

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%     
Csupor Jenő 06.08.2010, 16:27
quelle

3 Antworten

4

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%     
Dan Puzey 06.08.2010 16:57
quelle
3

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:

%Vor%

    
Charlie 06.08.2010 16:46
quelle
2

Schauen Sie sich diese Lösung an Es löst genau das Problem, das Sie haben.

    
Thomas Levesque 08.10.2011 19:54
quelle

Tags und Links