为了账号安全,请及时绑定邮箱和手机立即绑定

更改所选ListBox项的背景颜色

更改所选ListBox项的背景颜色

一只名叫tom的猫 2019-11-29 11:05:22
到目前为止,这是我的XAML。    <ScrollViewer Grid.Column="1" Grid.RowSpan="2">        <ListBox   Background="Black" ItemsSource="{Binding Path=ActiveLog}" >            <ListBox.ItemTemplate>                <DataTemplate>                    <Grid Background="Black">                        <Grid.ColumnDefinitions>                            <ColumnDefinition Width="200"></ColumnDefinition>                            <ColumnDefinition Width="*"></ColumnDefinition>                        </Grid.ColumnDefinitions>                        <Grid.RowDefinitions>                            <RowDefinition></RowDefinition>                            <RowDefinition></RowDefinition>                        </Grid.RowDefinitions>                        <TextBlock Grid.Column="0" Grid.Row="0" Foreground="White">                            <TextBlock >Date:</TextBlock>                            <TextBlock  Text="{Binding Path=LogDate}"/>                        </TextBlock>                        <TextBlock Grid.Column="1" Grid.Row="0" Foreground="White">                            <TextBlock >Severity:</TextBlock>                            <TextBlock  Text="{Binding Path=Severity}"/>                        </TextBlock>                        <TextBlock Grid.Column="0" Grid.ColumnSpan="2" Grid.Row="1" Foreground="LightGray" Text="{Binding Path=Message}"></TextBlock>                    </Grid>                </DataTemplate>            </ListBox.ItemTemplate>            <ListBox.Template>                <ControlTemplate>                    <StackPanel Background="Black" IsItemsHost="True" >                    </StackPanel>                </ControlTemplate>            </ListBox.Template>        </ListBox>    </ScrollViewer>唯一的问题是所选项目的右侧有一个蓝色框。我认为可以更改选择的颜色,但是找不到。
查看完整描述

3 回答

?
12345678_0001

TA贡献1802条经验 获得超5个赞

您需要使用ListBox.ItemContainerStyle。


ListBox.ItemTemplate指定应如何显示项目的内容。但是WPF仍将每个项目包装在ListBoxItem控件中,默认情况下,如果选中它,则将其Background设置为系统突出显示颜色。您不能停止WPF创建ListBoxItem控件,但是可以为它们设置样式(在您的情况下,将Background设置为始终为Transparent或Black或其他颜色),并使用ItemContainerStyle。


juFo的答案显示了一种可能的实现方式,即在项目样式的上下文内“劫持”系统背景画笔资源;另一种可能更惯用的技术是对SetterBackground属性使用。


查看完整回答
反对 回复 2019-11-29
?
杨__羊羊

TA贡献1943条经验 获得超7个赞

<UserControl.Resources>

    <Style x:Key="myLBStyle" TargetType="{x:Type ListBoxItem}">

        <Style.Resources>

            <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}"

                             Color="Transparent"/>

        </Style.Resources>

    </Style>

</UserControl.Resources> 


<ListBox ItemsSource="{Binding Path=FirstNames}"

         ItemContainerStyle="{StaticResource myLBStyle}">  

您只需覆盖listboxitem的样式(请参阅:TargetType是ListBoxItem)


查看完整回答
反对 回复 2019-11-29
  • 3 回答
  • 0 关注
  • 1170 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信