首页 文章

为ListBox中的选定项设置背景颜色

提问于
浏览
7

我无法在列表框中设置所选项目的背景颜色 . 我不想在这个例子中交替颜色 . 我把它们作为测试,他们工作 . 触发器IsSelected随着字体粗体变为粗体而前景变为红色而触发 . 将高亮颜色画笔设置为SteelBlue无法达到预期效果,因为当ListBox失去焦点时它会消失 . 当ListBox失去焦点并且是我想要的时候,红色和粗体确实成立 . 我想要为所选项目拍摄并保持背景颜色 . 现在,所选项目的背景为白色,并在ListBox失去焦点时保持不变 . 感谢您的帮助,我将测试任何建议的修复程序 .

<ListBox Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="1" Name="WFEnum" Visibility="Visible" BorderThickness="2" Margin="1" Padding="2,2,7,2"
             ItemsSource="{Binding Path=SearchItem.SrchWorkFlows}" HorizontalAlignment="Left" 
             PresentationTraceSources.TraceLevel="High" AlternationCount="2" >
        <ListBox.ItemContainerStyle>
            <Style TargetType="ListBoxItem">
                <Setter Property="VerticalContentAlignment" Value="Center" />
                <Style.Triggers>
                    <Trigger Property="ItemsControl.AlternationIndex" Value="0">
                        <Setter Property="Background" Value="LightGreen"></Setter>
                    </Trigger>
                    <Trigger Property="ItemsControl.AlternationIndex" Value="1">
                        <Setter Property="Background" Value="LightPink"></Setter>
                    </Trigger>
                    <Trigger Property="IsSelected" Value="True" >
                        <Setter Property="FontWeight" Value="Bold" />
                        <Setter Property="Background" Value="SteelBlue" />
                        <Setter Property="Foreground" Value="Red" />
                    </Trigger>
                </Style.Triggers>
                <Style.Resources>
                    <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Transparent"/>
                </Style.Resources>
            </Style>
        </ListBox.ItemContainerStyle>
        <ListBox.ItemTemplate>
            <DataTemplate>
                <TextBlock Text="{Binding Path=Name, Mode=OneWay}" Background="Transparent" />
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>

2 回答

  • 14

    使用SystemColors.HighlightBrushKey(聚焦)和SystemColors.ControlBrushKey(未聚焦)为 ListBox 指定SelectedItem背景

    <Style.Resources>
        <!-- Background of selected item when focussed -->
        <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}"
                         Color="Green"/>
        <!-- Background of selected item when not focussed -->
        <SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}"
                         Color="LightGreen" />
    </Style.Resources>
    
  • 10
    <ListBox.Resources>
        <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}">SteelBlue</SolidColorBrush>
    </ListBox.Resources>
    

    如果您希望将其应用于焦点之外,则需要覆盖其他键:

    <SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}">SteelBlue</SolidColorBrush>
    

相关问题