Ich habe einige Artikel gesehen, die zeigen, wie AlternationIndex
mit ListBox
es oder ListView
s zu verwenden, aber ich hatte ein paar Stunden versucht, wechselnde Hintergrundfarben auf der Basis ItemsControl
Klasse zu bekommen und nichts scheint zu funktionieren. Alle ListBox
Proben sah ich ListBoxItem
als Zieltyp für den Stil verwenden, die den Hintergrund auf AlternationIndex
Basis setzt - wie dieses von MSDN:Wie wird AlternationIndex in ItemsControls verwendet?
<Grid>
<Grid.Resources>
<Style x:Key="alternatingWithTriggers" TargetType="{x:Type ListBoxItem}">
<Setter Property="Background" Value="Blue"/>
<Setter Property="Foreground" Value="White"/>
<Style.Triggers>
<Trigger Property="ListBox.AlternationIndex" Value="1">
<Setter Property="Background" Value="CornflowerBlue"/>
<Setter Property="Foreground" Value="Black"/>
</Trigger>
<Trigger Property="ListBox.AlternationIndex" Value="2">
<Setter Property="Background" Value="LightBlue"/>
<Setter Property="Foreground" Value="Navy"/>
</Trigger>
</Style.Triggers>
</Style>
</Grid.Resources>
<ListBox AlternationCount="3" ItemsSource="{StaticResource data}"
ItemContainerStyle="{StaticResource alternatingWithTriggers}">
</ListBox>
</Grid>
Ich möchte verwenden, um die ItemsControl
, weil ich nicht die Auswahl Funktionalität wollen und Ich denke, ein ListBox
Restyling, um es zu verstecken, könnte nicht die beste Wahl sein.
Dies ist eines der Dinge, die ich habe versucht:
<DataTemplate DataType="{x:Type vm:ObservableCollectionItem}">
<Grid>
<!-- some content here -->
</Grid>
</DataTemplate>
<!-- ... -->
<ItemsControl
ItemsSource="{Binding ObservableCollectionItems}"
AlternationCount="2"
>
<ItemsControl.ItemContainerStyle>
<Style>
<Style.Triggers>
<Trigger Property="ItemsControl.AlternationIndex" Value="0">
<Setter Property="Grid.Background" Value="Red"></Setter>
</Trigger>
<Trigger Property="ItemsControl.AlternationIndex" Value="1">
<Setter Property="Grid.Background" Value="Blue"></Setter>
</Trigger>
</Style.Triggers>
</Style>
</ItemsControl.ItemContainerStyle>
</ItemsControl>
Das Problem, das ich sah, war, dass die visuelle Struktur eine Liste von ContentPresenter
s hat, die ItemsControl.AlternationIndex
wechseln zwischen 0 und 1, aber die Grid
in jeweils ContentPresenter
hat ItemsControl.AlternationIndex
Es auf 0 gesetzt ist wahrscheinlich etwas offensichtlich fehlt mir ...
Es hat funktioniert! Vielen Dank! Ich frage mich, ob diese Lookup-Bindung auf großen ItemControls skalieren würde, aber zum Glück ist das nicht der Fall. –
Das zweite Beispiel funktioniert, das erste nicht, da der ContentPresenter * keine * Eigenschaft 'Background' hat. – Will
Wie ich direkt vor dem Beispiel sage;) – Bubblewrap