Search code examples
c#uwplistviewitemuwp-xaml

How to remove pressing effect on ListViewItem?


I have a ListView, when I select a row with mouse, while I am pressing, that row gets some padding or margin, I don't know what it is, I just want it not to happen, just select a row without any effect like when I select a row with keyboard.


Solution

  • To change the default behavior, you have to alter the style for the ListViewItem. You can find these styles on msdn or on your local drive:

    C:\Program Files (x86)\Windows Kits\10\DesignTime\CommonConfiguration\Neutral\UAP\10.0.14393.0\Generic\generic.xaml

    The visual states in question are most likely Pressed and PressedSelected. Alter these visual states to whatever you would like the ListView to do.

    <!-- Style for Windows.UI.Xaml.Controls.ListViewItem -->
    <Style TargetType="ListViewItem" x:Key="ListViewItemExpanded">
    <Setter Property="FontFamily" Value="{ThemeResource ContentControlThemeFontFamily}" />
    <Setter Property="FontSize" Value="{ThemeResource ControlContentThemeFontSize}" />
    <Setter Property="Background" Value="Transparent"/>
    <Setter Property="Foreground" Value="{ThemeResource SystemControlForegroundBaseHighBrush}" />
    <Setter Property="TabNavigation" Value="Local"/>
    <Setter Property="IsHoldingEnabled" Value="True"/>
    <Setter Property="Padding" Value="12,0,12,0"/>
    <Setter Property="HorizontalContentAlignment" Value="Left"/>
    <Setter Property="VerticalContentAlignment" Value="Center"/>
    <Setter Property="MinWidth" Value="{ThemeResource ListViewItemMinWidth}"/>
    <Setter Property="MinHeight" Value="{ThemeResource ListViewItemMinHeight}"/>
    <Setter Property="UseSystemFocusVisuals" Value="True" />
    <Setter Property="Template">
      <Setter.Value>
        <ControlTemplate TargetType="ListViewItem">
          <Grid x:Name="ContentBorder"
                  Background="{TemplateBinding Background}"
                  BorderBrush="{TemplateBinding BorderBrush}"
                  BorderThickness="{TemplateBinding BorderThickness}">
            <VisualStateManager.VisualStateGroups>
              <VisualStateGroup x:Name="CommonStates">
                ...
                <VisualState x:Name="Pressed">
                  <Storyboard>
                    <DoubleAnimation Storyboard.TargetName="BorderBackground"
                                     Storyboard.TargetProperty="Opacity"
                                     Duration="0"
                                     To="1"/>
                    <ObjectAnimationUsingKeyFrames Storyboard.TargetName="BorderBackground" Storyboard.TargetProperty="Fill">
                      <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SystemControlHighlightListMediumBrush}" />
                    </ObjectAnimationUsingKeyFrames>
                    <ObjectAnimationUsingKeyFrames Storyboard.TargetName="ContentPresenter" Storyboard.TargetProperty="Foreground">
                      <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SystemControlHighlightAltBaseHighBrush}" />
                    </ObjectAnimationUsingKeyFrames>
                    <PointerDownThemeAnimation TargetName="ContentPresenter" />
                  </Storyboard>
                </VisualState>
                ...
                <VisualState x:Name="PressedSelected">
                  <Storyboard>
                    <DoubleAnimation Storyboard.TargetName="MultiSelectCheck"
                                     Storyboard.TargetProperty="Opacity"
                                     Duration="0:0:0"
                                     To="1"/>
                    <DoubleAnimation Storyboard.TargetName="BorderBackground"
                                     Storyboard.TargetProperty="Opacity"
                                     Duration="0"
                                     To="1"/>
                    <ObjectAnimationUsingKeyFrames Storyboard.TargetName="BorderBackground" Storyboard.TargetProperty="Fill">
                      <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SystemControlHighlightListAccentHighBrush}" />
                    </ObjectAnimationUsingKeyFrames>
                    <ObjectAnimationUsingKeyFrames Storyboard.TargetName="ContentPresenter" Storyboard.TargetProperty="Foreground">
                      <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SystemControlHighlightAltBaseHighBrush}" />
                    </ObjectAnimationUsingKeyFrames>
                    <PointerDownThemeAnimation TargetName="ContentPresenter" />
                  </Storyboard>
                </VisualState>
              </VisualStateGroup>
              ...