我是WPF的新手,在WPF应用程序中我使用Listview Gridview来显示数据。 我已经自定义了Listview的样式,现在我想为Listview Gridview列标题更改鼠标悬停效果的默认亮蓝色
我用Google搜索并更改了Column标题的样式但我无法调整listview列的大小(无法使用鼠标拖动调整列标题的大小)。
是否有相同的解决方案?
提前致谢
答案 0 :(得分:4)
如果您更改列标题的模板(正如我假设您在更改样式时所做的那样),您实际上是在重建它。因此,您必须重建原始模板的所有功能。
您可以获得完整的模板here。
但是就你的问题而言,请务必添加以下样式:
<Style x:Key="GridViewColumnHeaderGripper"
TargetType="Thumb">
<Setter Property="Width"
Value="18" />
<Setter Property="Background">
<Setter.Value>
<LinearGradientBrush StartPoint="0,0"
EndPoint="0,1">
<LinearGradientBrush.GradientStops>
<GradientStopCollection>
<GradientStop Color="{DynamicResource BorderLightColor}"
Offset="0.0" />
<GradientStop Color="{DynamicResource BorderDarkColor}"
Offset="1.0" />
</GradientStopCollection>
</LinearGradientBrush.GradientStops>
</LinearGradientBrush>
</Setter.Value>
</Setter>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Thumb}">
<Border Padding="{TemplateBinding Padding}"
Background="Transparent">
<Rectangle HorizontalAlignment="Center"
Width="1"
Fill="{TemplateBinding Background}" />
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
<Setter Property="BorderBrush">
<Setter.Value>
<LinearGradientBrush EndPoint="0.5,1"
StartPoint="0.5,0">
<GradientStop Color="Black"
Offset="0" />
<GradientStop Color="White"
Offset="1" />
</LinearGradientBrush>
</Setter.Value>
</Setter>
</Style>
然后,在您的自定义样式中,确保ControlTemplate中包含一个Grid,第一项是您想要的自定义设计,第二项是标题抓取器。
以下是一个例子:
<Style x:Key="CustomGridViewColumnHeader" TargetType="{x:Type GridViewColumnHeader}" >
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type GridViewColumnHeader}">
<Grid>
<!-- My Custom Template -->
<Border Background="#FF3B4A51" Height="35">
<TextBlock Text="{TemplateBinding Content}" Foreground="White" FontSize="15" Margin="4,0,0,0" Padding="0,5" />
</Border>
<!-- The gripper / header resizer -->
<Thumb x:Name="PART_HeaderGripper"
HorizontalAlignment="Right"
Margin="0,0,-9,0"
Style="{StaticResource GridViewColumnHeaderGripper}" />
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
<!-- Other properties you want to change ... -->
<Setter Property="IsHitTestVisible" Value="True"/>
<Setter Property="HorizontalContentAlignment" Value="Left"></Setter>
</Style>