WPF ListBox, как скрыть границу и изменить выбранный цвет фона элемента? Я хотел бы скрыть границу ListBox и сделать фон выбранного элемента таким же, как невыделенные. Как это сделать? Ответ 1 Чтобы скрыть границу, используйте <ListBox BorderThickness="0"/> Если вы не хотите иметь выделение, используйте ItemsControl вместо ListBox. Следующий код скрывает границу вокруг ListBox и всегда показывает белый фон на элементе (если он сгенерирован через ItemsSource -property). <ListBox BorderThickness="0" HorizontalContentAlignment="Stretch"> <ListBox.ItemContainerStyle> <Style TargetType="ListBoxItem"> <Setter Property="Padding" Value="0"/> </Style> </ListBox.ItemContainerStyle> <ListBox.ItemTemplate> <DataTemplate> <Grid Background="White"> <ContentPresenter Content="{Binding}"/> </Grid> </DataTemplate> </ListBox.ItemTemplate> </ListBox> Если вы используете экземпляры ListViewItem, вы должны изменить фон там. UPDATE Тем временем я нашел решение, которое является ИМО намного более элегантным: <ListBox BorderThickness="0" HorizontalContentAlignment="Stretch" > <ListBox.Resources> <Style TargetType="ListBoxItem"> <Style.Resources> <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Transparent"/> <SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" Color="Transparent"/> <SolidColorBrush x:Key="{x:Static SystemColors.HighlightTextBrushKey}" Color="Black"/> </Style.Resources> </Style> </ListBox.Resources> </ListBox> Это должно работать также с экземплярами ListBoxItem и меньше, чем "IMO".
Ответ 1 Чтобы скрыть границу, используйте <ListBox BorderThickness="0"/> Если вы не хотите иметь выделение, используйте ItemsControl вместо ListBox. Следующий код скрывает границу вокруг ListBox и всегда показывает белый фон на элементе (если он сгенерирован через ItemsSource -property). <ListBox BorderThickness="0" HorizontalContentAlignment="Stretch"> <ListBox.ItemContainerStyle> <Style TargetType="ListBoxItem"> <Setter Property="Padding" Value="0"/> </Style> </ListBox.ItemContainerStyle> <ListBox.ItemTemplate> <DataTemplate> <Grid Background="White"> <ContentPresenter Content="{Binding}"/> </Grid> </DataTemplate> </ListBox.ItemTemplate> </ListBox> Если вы используете экземпляры ListViewItem, вы должны изменить фон там. UPDATE Тем временем я нашел решение, которое является ИМО намного более элегантным: <ListBox BorderThickness="0" HorizontalContentAlignment="Stretch" > <ListBox.Resources> <Style TargetType="ListBoxItem"> <Style.Resources> <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Transparent"/> <SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" Color="Transparent"/> <SolidColorBrush x:Key="{x:Static SystemColors.HighlightTextBrushKey}" Color="Black"/> </Style.Resources> </Style> </ListBox.Resources> </ListBox> Это должно работать также с экземплярами ListBoxItem и меньше, чем "IMO".