Ho visto alcuni articoli che mostrano come utilizzare AlternationIndex
con ListBox
o ListView
s, ma ho trascorso alcune ore cercando di ottenere colori di sfondo alternati sulla classe ItemsControl
di base e nulla sembra funzionare. Tutti ListBox
campioni che ho visto usare ListBoxItem
come il tipo di destinazione per lo stile che imposta lo sfondo in base AlternationIndex
- come questo da MSDN:Come utilizzare AlternationIndex in ItemsControls?
<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>
voglio usare il ItemsControl
perché non voglio che la funzionalità di selezione e Penso che il restyling di ListBox
per nasconderlo potrebbe non essere la scelta migliore.
Questa è una delle cose che stavo cercando:
<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>
Il problema che ho visto era che l'albero visivo ha una lista di ContentPresenter
s che hanno ItemsControl.AlternationIndex
alternano tra 0 e 1, ma il Grid
in ogni ContentPresenter
ha ItemsControl.AlternationIndex
impostato a 0.
probabilmente c'è qualcosa ovvio che mi manca ...
Ha funzionato! Grazie! Mi chiedo se questa associazione di ricerca si ridimensionerà su grandi ItemControls, ma fortunatamente il mio non è il caso. –
Il secondo esempio funziona, il primo no, poiché ContentPresenter * non * ha una proprietà 'Background'. – Will
Come ho detto subito prima dell'esempio;) – Bubblewrap