WPF中的触发器不工作
我有一个WPF中的触发器不工作,wpf,triggers,controltemplate,Wpf,Triggers,Controltemplate,我有一个ListView,其中ListView.View为GridView 默认情况下,mouseOver正在工作,ListViewItem在鼠标悬停时高亮显示,单击时被选中。但是在我修改了控制模板之后,我得到了我想要的模板,但是高亮显示和选择消失了 我用了扳机,但它不起作用 这是我的密码 <Style x:Key="filesListViewItemStyle" TargetType="{x:Type ListViewItem}"> <Setter P
ListView
,其中ListView.View
为GridView
默认情况下,mouseOver
正在工作,ListViewItem
在鼠标悬停时高亮显示,单击时被选中。但是在我修改了控制模板之后,我得到了我想要的模板,但是高亮显示和选择消失了
我用了扳机,但它不起作用
这是我的密码
<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
之间添加了一行分隔符
我只是不明白为什么扳机不起作用 控件的背景属性仅在ControlTemplate中使用。您已将模板替换为不使用背景的模板,因此设置属性无效。您可以使用{TemplateBinding Background}
将属性绑定到控件的背景。可能需要将网格的背景绑定到它:
<ControlTemplate TargetType="ListViewItem">
<Grid Height="40" Background="{TemplateBinding Background}">
<GridViewRowPresenter/>
请对照ListViewItem的默认ControlTemplate检查您是否遗漏了任何内容。或者你可以以此为基础,根据自己的喜好进行调整。我通常倾向于避免替换ControlTemplates(除非绝对需要),因为我不确定自己是否理解所有的复杂性。。