У меня есть следующее окно, в котором отображается список.Я определил стиль для ListViewItem:
<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>
Я нашел несколько примеров кода в Интернете, и эти строки словаря ресурсов остались после нескольких измененийно я не понимаю, почему, если они присутствуют, только первый элемент в представлении не сможет подобрать определенные стили.
Есть идеи?
Редактировать:
Я заметил, что мой цвет фона IsSelected не определяется.Если я установлю его, например, на Зеленый, выбранные элементы по-прежнему будут использовать выбранный по умолчанию цвет Windows.