我有ListBox
个ListBoxItem
,其中包含嵌套的ListBox
。现在我希望顶级ListBox
项目没有蓝色背景,然后选择它们(见图)。
Example Image http://img43.imageshack.us/img43/237/window1.png
我尝试使用下面的XAML样式将背景颜色更改为透明,如此blog post中所述。这样可以,但它也会更改嵌套ListBox
中项目的选定背景颜色。如何将其更改为仅适用于顶级项目?
<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>
据我所知,此样式适用于ListBoxItem
类型的所有对象,但如何才能将其应用于listbox1中的项?
<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>
可能有更好的方法来实现我想要的,在这种情况下,请告诉我!
答案 0 :(得分:2)
您是否需要“内部”和“外部”项目才能选择?我可能会坚持使用ItemsControl作为外部列表,只需让内部项目可选。然后你可以设置ListBoxItem的样式而不影响“外部”项。
答案 1 :(得分:1)
我同意Matt(看起来您可以在ItemsControl
内为主列表添加ScrollViewer
,但您也可以将颜色重置为子项范围内的默认值ListBox
ES:
<SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="{x:Static SystemColors.HighlightBrush}"/>
<SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" Color="{x:Static SystemColors.ControlBrush}"/>