у меня есть ListView
, с ListView.View
как GridView
.
По умолчанию, mouseOver
работает, ListViewItem
подсвечивается при наведении курсора мыши и выделяется при нажатии на него. Но после того, как я изменил ControlTemplate
, Я получил нужный шаблон, но выделение и выделение пропали.
Я использую триггер, но он не работает.
Вот мой код.
<Style x:Key="filesListViewItemStyle" TargetType="{x:Type ListViewItem}">
<Setter Property="IsSelected" Value="{Binding FileIsSelected}"/>
<Setter Property="HorizontalContentAlignment" Value="Stretch"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ListViewItem">
<Grid Height="40">
<GridViewRowPresenter/>
<Line X1="0.0" Y1="0.0" X2="{Binding ActualWidth, RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type ListView}}}" Y2="0.0" StrokeThickness="1" StrokeDashArray="2" Stroke="Gray" />
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="Green"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
В моем шаблоне я фактически добавил строку в качестве разделителя. между двумя строками ListViewItem
.
Я просто не понимаю, почему триггер не работает!
Свойство Background элемента управления используется только в ControlTemplate. Вы заменили шаблон шаблоном, в котором не используется фон, поэтому установка свойства не имеет никакого эффекта. Вы можете использовать {TemplateBinding Background}
для привязки свойств к фону элемента управления. Возможно, вы захотите привязать к нему Background of the Grid:
<ControlTemplate TargetType="ListViewItem">
<Grid Height="40" Background="{TemplateBinding Background}">
<GridViewRowPresenter/>