0

I'm trying to enable resize of column header in list view something in my styles in not set properly , I cant see the option to drag and resize. Everythink works fine when I remove the lib usage. Styles Resource:

<Style x:Key="ListViewItem" TargetType="ListViewItem">

        <Setter Property="Background" Value="Transparent"/>
        <Setter Property="HorizontalContentAlignment" Value="Center"/>
        <Style.Triggers>
            <Trigger Property="IsMouseOver" Value="True">
                <Setter Property="Background" Value="#76b900"/>
            </Trigger>
            <Trigger Property="IsSelected" Value="True">
                <Setter Property="Background" Value="#76b900"/>
            </Trigger>
        </Style.Triggers>
    </Style>
    <Style x:Key="ListViewStyle" TargetType="{x:Type ListView}" >
        <Setter Property="ItemContainerStyle" Value="{StaticResource ListViewItem}"/>
    </Style>


    <Style x:Key="GridViewColumnHeaderStyle1" TargetType="{x:Type GridViewColumnHeader}">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type GridViewColumnHeader}">
                    <Border BorderThickness="0,0,1,1" BorderBrush="Black" Background="Transparent">
                        <TextBlock x:Name="ContentHeader" Text="{TemplateBinding Content}" 
                                   Padding="5,5,5,5" Width="{TemplateBinding Width}" TextAlignment="Center" />
                    </Border>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
        <Setter Property="OverridesDefaultStyle" Value="True" />
        <Setter Property="Foreground" Value="#76b900" />
        <Setter Property="FontFamily" Value="Segoe UI" />
        <Setter Property="FontSize" Value="18" />
        <Setter Property="Padding" Value="40,40" />

    </Style>

My List view in XAML:

 <ListView  d:ItemsSource="{d:SampleData}" ItemsSource="{Binding PGroups}" SelectedItem="{Binding PGroupSelected}"
                             Foreground="White" Background="#292929" FontSize="16" BorderThickness="0"
                 Visibility="{Binding PGroupsVis}"  Style="{DynamicResource ListViewStyle}" 
                       ScrollViewer.HorizontalScrollBarVisibility="Auto" ScrollViewer.CanContentScroll="False" 
                       IsSynchronizedWithCurrentItem="True" >
                <ListView.View>
                    <GridView ColumnHeaderContainerStyle="{StaticResource GridViewColumnHeaderStyle1}">
                        <GridViewColumn Header="Group" DisplayMemberBinding="{Binding Name}" Width="220" ></GridViewColumn>
                        <GridViewColumn Header="Test Level" DisplayMemberBinding="{Binding Level.Name}" Width="140"></GridViewColumn>
                        <GridViewColumn Header="OverrideColumn" DisplayMemberBinding="{Binding OverrideColumn}" Width="140"></GridViewColumn>
                        <GridViewColumn Header="Active" DisplayMemberBinding="{Binding IsActive}" Width="140"></GridViewColumn>
                        <GridViewColumn Header="Remove">
                            <GridViewColumn.CellTemplate>
                                <DataTemplate>
                                    <Button  ToolTip="Remove"
                               Command="{Binding Path=DataContext.RemovePGroupCommand, 
                               RelativeSource={RelativeSource AncestorType=ListView, 
                                               Mode=FindAncestor}}" CommandParameter="{Binding}"
                    VerticalAlignment="Center"
                    HorizontalAlignment="Center" Style="{StaticResource SimpleButton}">
                                        <Image Source="../Images/delete3.png" Width="25"
                   Height="25" Visibility="{Binding ComboUsersVis}" ></Image>

                                    </Button>
                                </DataTemplate>
                            </GridViewColumn.CellTemplate>
                        </GridViewColumn>
                    </GridView>
                </ListView.View>
            </ListView>

I tried to use

<GridViewColumnHeader Content="Value" IsHitTestVisible="False"/>

but it seems not working.

What am I missing here ?

1 Answer 1

0

You're missing the thumb used to resize the header. Which must be named PART_HeaderGripper:

<Thumb x:Name="PART_HeaderGripper"
             HorizontalAlignment="Right"
             Margin="0,0,-9,0"
             Style="{StaticResource GridViewColumnHeaderGripper}" />

When you re templated the column header.

See

https://learn.microsoft.com/en-us/dotnet/desktop/wpf/controls/listview-styles-and-templates?redirectedfrom=MSDN&view=netframeworkdesktop-4.8

<ControlTemplate TargetType="GridViewColumnHeader">
    <Grid>
      <VisualStateManager.VisualStateGroups>
        <VisualStateGroup x:Name="CommonStates">
          <VisualState x:Name="Normal" />
          <VisualState x:Name="MouseOver">
            <Storyboard>
              <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="(Panel.Background).
                (GradientBrush.GradientStops)[1].(GradientStop.Color)"
                                            Storyboard.TargetName="HeaderBorder">
                <EasingColorKeyFrame KeyTime="0"
                                     Value="{StaticResource ControlMouseOverColor}" />
              </ColorAnimationUsingKeyFrames>
            </Storyboard>
          </VisualState>
          <VisualState x:Name="Pressed" />
          <VisualState x:Name="Disabled" />
        </VisualStateGroup>
      </VisualStateManager.VisualStateGroups>
      <Border x:Name="HeaderBorder"
              BorderThickness="0,1,0,1"
              Padding="2,0,2,0">
        <Border.BorderBrush>
          <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>

        </Border.BorderBrush>
        <Border.Background>

          <LinearGradientBrush StartPoint="0,0"
                               EndPoint="0,1">
            <LinearGradientBrush.GradientStops>
              <GradientStopCollection>
                <GradientStop Color="{DynamicResource ControlLightColor}"
                              Offset="0.0" />
                <GradientStop Color="{DynamicResource ControlMediumColor}"
                              Offset="1.0" />
              </GradientStopCollection>
            </LinearGradientBrush.GradientStops>
          </LinearGradientBrush>

        </Border.Background>
        <ContentPresenter x:Name="HeaderContent"
                          Margin="0,0,0,1"
                          RecognizesAccessKey="True"
                          VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
                          HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
                          SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>
      </Border>
      <Thumb x:Name="PART_HeaderGripper"
             HorizontalAlignment="Right"
             Margin="0,0,-9,0"
             Style="{StaticResource GridViewColumnHeaderGripper}" />
    </Grid>
  </ControlTemplate>

Before you re template anything, it's best to take a long look at what the default template is. Templates are often much more complicated than you might imagine. Namea controls are often named so they can be referenced in the code for that control. Miss them out or mis name them and you are likely to have problems.

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.