J'ai un ListBox
avec ListBoxItem
s qui contient un ListBox
imbriqué. Maintenant, je veux que les objets de haut niveau de ListBox
n'aient pas d'arrière-plan bleu alors ils sont sélectionnés (voir image).Styling ListBoxItem de ListBoxes imbriquées [WPF]
Example Image http://img43.imageshack.us/img43/237/window1.png
J'ai essayé d'utiliser le XAML ci-dessous avec un style pour changer la couleur d'arrière-plan transparent décrivaient dans ce blog post. Cela fonctionne, mais il modifie également la couleur d'arrière-plan sélectionnée des éléments dans les ListBox
imbriqués. Comment puis-je le modifier pour ne l'appliquer qu'aux éléments de niveau supérieur?
<Window x:Class="WpfTest.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="350" Width="352">
<Grid>
<Grid.Resources>
<DataTemplate x:Key="SampleItemTemplate">
<Border Margin="5" Background="Gray" CornerRadius="3">
<Border.BitmapEffect>
<DropShadowBitmapEffect/>
</Border.BitmapEffect>
<StackPanel Margin="2">
<TextBlock Text="{Binding Path=Lid, StringFormat='ProvID: {0}'}"/>
<ListBox ItemsSource="{Binding Path=TestOrders}"/>
</StackPanel>
</Border>
</DataTemplate>
</Grid.Resources>
<Button Height="23" Name="button1" VerticalAlignment="Bottom" HorizontalAlignment="Right" Width="75" Margin="0,0,12,12" Click="button1_Click">Button</Button>
<ListBox Name="listBox1" Margin="12,12,12,41" ItemsSource="{Binding}" ItemTemplate="{StaticResource SampleItemTemplate}">
<ListBox.Resources>
<Style TargetType="{x:Type ListBoxItem}">
<Style.Resources>
<SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Transparent"/>
<SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" Color="Transparent"/>
</Style.Resources>
</Style>
</ListBox.Resources>
</ListBox>
</Grid>
</Window>
Je comprends que ce style applique à tous les objets de type ListBoxItem
, mais comment puis-je à appliquer seulement aux articles en listbox1? Probablement il ya une meilleure façon d'accomplir ce que je veux, dans ce cas, s'il vous plaît dites-moi!