WPF ListView:标题样式
我想要一个具有列和特定样式的列表视图: 所有列标题的背景都应该是透明的,除非鼠标在其中一个列标题上 发生这种情况时,鼠标所在列的背景应该是黄色,其他列中的所有颜色都应该是蓝色WPF ListView:标题样式,wpf,templates,listview,styles,Wpf,Templates,Listview,Styles,我想要一个具有列和特定样式的列表视图: 所有列标题的背景都应该是透明的,除非鼠标在其中一个列标题上 发生这种情况时,鼠标所在列的背景应该是黄色,其他列中的所有颜色都应该是蓝色 我尝试过使用GridViewColumnHeader模板,但这似乎只改变了活动的列背景。有什么帮助吗?为了做到这一点,我认为您必须替换整个ListView样式 您必须在此处显示的ScrollViewer样式中的GridViewHeaderRowPresenter周围放置一个边框,并添加一个IsMouseOver触发器,以将
我尝试过使用GridViewColumnHeader模板,但这似乎只改变了活动的列背景。有什么帮助吗?为了做到这一点,我认为您必须替换整个ListView样式 您必须在此处显示的
ScrollViewer
样式中的GridViewHeaderRowPresenter
周围放置一个边框
,并添加一个IsMouseOver
触发器,以将该边框的背景设置为蓝色
然后,当然,您需要在GridViewColumnHeader
模板上使用IsMouseOver
触发器使背景变黄
如果您需要任何进一步的解释,请询问
--
HTH,Dusty最后,我找到了一种方法:基本上,设置一个触发器,查看是否选中了父级GridViewHeaderRowPresenter
。然后,所有标题将返回该属性true
然后检查标题上是否有鼠标,只有选定的标题才会返回true
结果会是这样的:
我想我找到的解决方案在理念上与您提到的类似,只是您的解决方案需要对scrollviewer进行样式化,而我的解决方案则直接位于GridViewColumnHeader中。无论如何谢谢你!
<ControlTemplate.Triggers>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor,
AncestorType={x:Type GridViewHeaderRowPresenter}},
Path=IsMouseOver}"
Value="True">
<Setter TargetName="HeaderBack" Property="Background"
Value="{StaticResource HeaderActiveColumnBackground}"/>
<Setter TargetName="PART_HeaderGripper" Property="Background"
Value="{StaticResource VerticalLineColor}"/>
</DataTrigger>
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="HeaderBack" Property="Background"
Value="{StaticResource HeaderSelectedColumnBackground}"/>
</Trigger>
<Trigger Property="HasContent" Value="false">
<Setter TargetName="HeaderBack" Property="Background"
Value="{StaticResource HeaderDefaultColumnNoContentBackground}"/>
<Setter TargetName="PART_HeaderGripper" Property="Background"
Value="{StaticResource HeaderDefaultColumnNoContentBackground}"/>
</Trigger>
</ControlTemplate.Triggers>