Ich versuche, Stil auf mehrere Expander anzuwenden, die ein ähnliches Aussehen und Funktionalität haben. Aber das Problem ist, dass, wenn ich Expander.Content style, nur einer von vielen Inhalt haben wird und der Rest alle leer sind.Expander.Content nur auf einen angewendet
Minimal Beispiel:
<Style TargetType="Expander" BasedOn="{StaticResource {x:Type Expander}}">
<Setter Property="Header">
<Setter.Value>
Header
</Setter.Value>
</Setter>
<Setter Property="Content">
<Setter.Value>
<TextBlock Text="1"/>
</Setter.Value>
</Setter>
</Style>
<!-- .... -->
<Expander Grid.Row="0"/>
<Expander Grid.Row="1"/>
<Expander Grid.Row="2"/>
, da Sie nur die zweite Reihe zu sehen Inhalt hat (1) während der Entwurfszeit. Während der Laufzeit hat nur der letzte Expander den Inhalt (1).
Wenn ich auf den ersten Expander klicke, wird der Inhalt (1) des dritten Expanders tatsächlich zum ersten Expander verschoben.
Warum passiert das? Und wie man es repariert?
Warum erstellt Header 3 Instanzen, aber nur eine für Inhalt? – Steve
@Steve: Weil Sie es auf den String '" Header "' setzen, was kein * visuelles Element * ist (im Gegensatz zum 'TextBlock'). –
also erstellen alle Stile nur eine Instanz und teilen sie über alle Elemente, für die sie gilt. Und wenn ich ein visuelles Element innerhalb des Stils verwenden möchte, aber dass sie zwischen den Elementen unterschiedlich sein sollen, dann benutze das Template. Habe ich richtig verstanden – Steve