Ändern der WPF-StackPanel-Vorlage

8

Ich versuche, ein benutzerdefiniertes Stil-Panel ( StyledStackPanel ) zu erstellen, das mit dem normalen StackPanel identisch ist, das einen benutzerdefinierten Stil hat. Zum Beispiel - wenn der Stil einfach eine Unterstreichung hinzufügen soll, schreiben Sie:

%Vor%

Ich möchte das gleiche Aussehen erhalten, als ob ich geschrieben hätte:

%Vor%

Wenn StackPanel ein Control wäre, hätte ich DataTemplate dieses Steuerelements ersetzen können. Es erbt jedoch Panel , das FrameworkElement erbt.
Gibt es eine Möglichkeit, die Vorlage von StackPanel zu ändern?

    
Elad 11.07.2010, 13:19
quelle

2 Antworten

6

Es gibt keine Möglichkeit, ein ControlTemplate für ein Panel festzulegen, aber Sie haben mehrere Optionen:

  1. Erstellen Sie ein benutzerdefiniertes / Benutzersteuerelement mit dem StackPanel als untergeordnetes Element.

  2. Erben Sie von StackPanel und überschreiben Sie OnRender, um Ihren benutzerdefinierten Stil zu zeichnen (Sie müssen möglicherweise auch MeasureOverride und ArrangeOverride überschreiben, um den Zeichnungen der Bereiche des Bedienfelds etwas Platz zu geben.)

  3. Übernehmen Sie direkt vom Panel und überschreiben Sie OnRender, MeasureCore und ArrangeCore - wenn Sie das Panel auf eine bestimmte Weise verwenden müssen und nicht alle StackPanel-Optionen benötigen, ist dies vielleicht der einfachste Weg, da der StackPanel-Layoutalgorithmus ist einfach.

  4. Erben Sie von Decorator (wenn Sie in Code zeichnen) oder von ContentControl (wenn Sie ControlTemplate verwenden möchten) und verzerren Sie Ihr Panel, wenn Sie es verwenden:

    %Vor%
  5. Schreiben Sie den Stil für ItemsControl, ItemsControl hat eine ControlTemplate, die Sie festlegen können und umschließt grundsätzlich ein Panel (standardmäßig ist es ein vertikales StackPanel).

Ich würde mit Option 4 gehen, wenn Sie Zugriff auf die Eigenschaften von StackPanel benötigen oder 5, wenn Sie nicht möchten.

    
Nir 11.07.2010, 14:04
quelle
1

Sie sollten ein normales benutzerdefiniertes Steuerelement erstellen, das seine untergeordneten Elemente zu einem inneren StackPanel hinzufügt.

Zum Beispiel:

%Vor%

(ungetestet)

    
SLaks 11.07.2010 13:32
quelle

Tags und Links