Изменение размера заголовка столбца WPF-ListView с помощью пользовательского стиля
Я новичок в WPF, В приложении WPF я использовал Listview Gridview для отображения данных. Я настроил стиль Listview, теперь я хочу изменить глянцевый синий цвет по умолчанию для эффекта наведения мыши для заголовка столбца Gridview Listview
Я погуглил и изменил стиль заголовка столбца, но не могу изменить размер столбца списка (не могу изменить размер заголовка столбца с помощью перетаскивания мышью).
Есть ли какое-нибудь решение для того же самого?
заранее спасибо
1 ответ
Если вы измените шаблон заголовка столбца (как я полагаю, вы сделали это при изменении стиля), вы по сути перестроите его. Таким образом, вы должны восстановить все функциональные возможности исходного шаблона.
Вы можете получить полный шаблон здесь.
Но к сути вашего вопроса, обязательно добавьте следующий стиль:
<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>