У меня есть следующее окно, которое отображает список. Я определил стиль для ListViewItem:Стиль ListViewItem в ResourceDictionary
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Window.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary>
<Style TargetType="{x:Type ListViewItem}" BasedOn="{StaticResource {x:Type ListBoxItem}}">
<Style.Triggers>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsMouseOver" Value="True" />
<Condition Property="IsSelected" Value="False"/>
</MultiTrigger.Conditions>
<Setter Property="Background" Value="Red" />
</MultiTrigger>
<Trigger Property="IsSelected" Value="True">
<Setter Property="Background" Value="Blue" />
</Trigger>
</Style.Triggers>
</Style>
</ResourceDictionary>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Window.Resources>
<DockPanel>
<ListView x:Name="listView"/>
</DockPanel>
</Window>
код позади просто определяется как:
public MainWindow()
{
InitializeComponent();
for (int i = 1; i <= 100; i++)
{
listView.Items.Add(i);
}
}
Теперь, когда я запустить приложение, все выглядит хорошо для первого элемента в списке, кроме , Для первого элемента ни один из стилей не применяется. Если я изменить XAML к ниже, удаляя соответствующие строки из словаря ресурсов, все работает правильно:
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Window.Resources>
<Style TargetType="{x:Type ListViewItem}" BasedOn="{StaticResource {x:Type ListBoxItem}}">
<Style.Triggers>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsMouseOver" Value="True" />
<Condition Property="IsSelected" Value="False"/>
</MultiTrigger.Conditions>
<Setter Property="Background" Value="Red" />
</MultiTrigger>
<Trigger Property="IsSelected" Value="True">
<Setter Property="Background" Value="Blue" />
</Trigger>
</Style.Triggers>
</Style>
</Window.Resources>
<DockPanel>
<ListView x:Name="listView"/>
</DockPanel>
</Window>
Я нашел некоторые образцы кода в Интернете и те словарные линии ресурсных остались после нескольких правок, но я не понимаю, почему, если они присутствуют, только первый элемент в представлении не будет отображать определенные стили.
Любые идеи?
Edit:
Я заметил, что мой IsSelected цвет фона не подхватили. Например, если я установил его в «Зеленый», выбранные элементы по-прежнему будут использовать выбранный по умолчанию цвет Windows.