Изменение размера заголовка столбца 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>
Другие вопросы по тегам