Это - мой 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>
Единственная проблема состоит в том, что выбранный пункт имеет синее поле направо. Я предполагаю, что существует способ изменить цвет выделения, но я не могу найти его.
Вам нужно использовать listbox.itemcontainerStyle .
listbox.itemtemplate Указывает, как отображаться содержимое элемента. Но WPF до сих пор обернут каждый элемент в управлении ListBoxItem, который по умолчанию получает свой фон на систему выделить цвет, если он выбран. Вы не можете остановить WPF, создавая элементы управления ListBoxItem, но вы можете стильнуть их - в вашем случае, чтобы установить фон всегда прозрачным или черным или что-то еще - и сделать это, вы используете ItemContainerStyle.
Ответ Jufo показывает одну возможную реализацию, «угнатим» системного фонового кисточка в контексте стиля элемента; Другой, возможно, более идиоматическая техника - использовать установку
для фонового свойства.
<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)