Я новичок в WPF, поэтому мой код может быть немного странным.Извините за это.
Я хочу изменить событие MouseOver и Selected по умолчанию на ListView
.Следуя онлайн-инструкциям, я попытался изменить ControlTemplate
, но он не работает должным образом (событие по умолчанию исчезло, но ничего не происходит при MouseOver).
Затем я добавляю рамку за пределами ContentPresenter
, и пусть триггеры меняют фон границы.Это работает, но не правильно.Моя цель - отобразить что-то вроде этого.
┌──────────────────────────────────────┐
│ ┌─────┐ ────TEXT───────── │
│ │ │ ────TEXT───────── │
│ │ IMG │ │
│ │ │ │
│ │ │ Mouse Here, Not Trigger │
│ └─────┘ │
└──────────────────────────────────────┘ ← Enter Here
Если моя мышь входит в список элементов в нижнем правом углу и не перемещается по изображению или тексту , фон не отображаетсят изменить.Если я нажму, он не будет выбран.
Буду признателен, если вы скажете мне правильный способ (более WPF) для отображения данных, а не просто решите проблему с шаблоном.
ControlTemplate
:
<Style TargetType="ListView" x:Key="ListViewStyle"
... // Style for ListView
<Setter Property="ItemContainerStyle">
<Setter.Value>
<Style TargetType="{x:Type ListViewItem}">
<Setter Property="Background" Value="Transparent"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ListViewItem}">
<Border x:Name="ListViewItemBorder">
<ContentPresenter/>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" TargetName="ListViewItemBorder" Value="DimGray"/>
</Trigger>
<Trigger Property="IsSelected" Value="True">
<Setter Property="Background" TargetName="ListViewItemBorder" Value="DimGray"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
ListView:
<ListView x:Name="ListViewCollections" ItemsSource="{Binding}" Style="{StaticResource ListViewStyle}">
<ListView.ItemTemplate>
<DataTemplate>
<DockPanel Style="{StaticResource DockPanelStyle}"> // LastChildFill=False
<Image Source="{Binding something}"/>
<StackPanel Orientation="Vertical">
<TextBlock Text="{Binding something}"/>
<TextBlock Text="{Binding something}"/>
</StackPanel>
</DockPanel>
</DataTemplate>
</ListView.ItemTemplate>
</ListView