gpt4 book ai didi

WPF-Listview 列标题使用自定义样式调整大小

转载 作者:行者123 更新时间:2023-12-03 16:14:45 31 4
gpt4 key购买 nike

我是 WPF 新手,在 WPF 应用程序中,我使用 Listview Gridview 来显示数据。
我已经自定义了 Listview 的样式,现在我想更改 Listview Gridview Column Header 鼠标悬停效果的默认光泽蓝色

我用谷歌搜索并更改了列标题的样式,但我无法调整 ListView 列的大小(无法使用鼠标拖动调整列标题的大小)。

有没有相同的解决方案?

提前致谢

最佳答案

如果您更改列标题的模板(正如我假设您在更改样式时所做的那样),您实际上是在重建它。因此,您必须重建原始模板的所有功能。

您可以获得完整的模板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>

关于WPF-Listview 列标题使用自定义样式调整大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48047206/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com