Vidhya
Vidhya

Reputation: 443

How to Remove mouse hover effect in ListView Items Xamarin Forms UWP?

Want to remove mouse hover color on listview item in Xamarin forms UWP

how to do that?

Upvotes: 1

Views: 702

Answers (1)

Lucas Zhang
Lucas Zhang

Reputation: 18861

You can modify listViewItem PointerOverBackground: as Transparent in UWP project App.xaml

<Application
x:Class="xxx.UWP.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:xxx.UWP"
RequestedTheme="Light">

<Application.Resources>
    <ResourceDictionary>

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

            <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="0" />

            <Setter Property="HorizontalContentAlignment" Value="Stretch" />

            <Setter Property="VerticalContentAlignment" Value="Center" />

            <Setter Property="MinWidth" Value="{ThemeResource ListViewItemMinWidth}" />

            <Setter Property="MinHeight" Value="0" />

            <Setter Property="Template">

                <Setter.Value>

                    <ControlTemplate TargetType="ListViewItem">

                        <ListViewItemPresenter
                            HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}"
                            VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}"
                            CheckBoxBrush="{ThemeResource SystemControlForegroundBaseMediumHighBrush}"
                            CheckBrush="{ThemeResource SystemControlForegroundBaseMediumHighBrush}"
                            CheckMode="Inline"
                            ContentMargin="{TemplateBinding Padding}"
                            ContentTransitions="{TemplateBinding ContentTransitions}"
                            DisabledOpacity="{ThemeResource ListViewItemDisabledThemeOpacity}"
                            DragBackground="{ThemeResource ListViewItemDragBackgroundThemeBrush}"
                            DragForeground="{ThemeResource ListViewItemDragForegroundThemeBrush}"
                            DragOpacity="{ThemeResource ListViewItemDragThemeOpacity}"
                            FocusBorderBrush="{ThemeResource SystemControlForegroundAltHighBrush}"
                            FocusSecondaryBorderBrush="{ThemeResource SystemControlForegroundBaseHighBrush}"
                            PlaceholderBackground="{ThemeResource ListViewItemPlaceholderBackgroundThemeBrush}"
                            PointerOverBackground="Transparent"
                            PointerOverForeground="{ThemeResource SystemControlHighlightAltBaseHighBrush}"
                            PressedBackground="{ThemeResource SystemControlHighlightListMediumBrush}"
                            ReorderHintOffset="{ThemeResource ListViewItemReorderHintThemeOffset}"
                            SelectedBackground="{ThemeResource SystemControlHighlightListAccentLowBrush}"
                            SelectedForeground="{ThemeResource SystemControlHighlightAltBaseHighBrush}"
                            SelectedPointerOverBackground="{ThemeResource SystemControlHighlightListAccentMediumBrush}"
                            SelectedPressedBackground="{ThemeResource SystemControlHighlightListAccentHighBrush}"
                            SelectionCheckMarkVisualEnabled="True" />

                    </ControlTemplate>

                </Setter.Value>

            </Setter>

        </Style>

    </ResourceDictionary>

</Application.Resources>

And apply it in CustomRenderer

[assembly: ExportRenderer(typeof(Xamarin.Forms.ListView), typeof(CustomListViewRenderer))]
namespace xxx.UWP
{
    public class CustomListViewRenderer : ListViewRenderer
    {
        protected override void OnElementChanged(ElementChangedEventArgs<ListView> e)
        {
            base.OnElementChanged(e);

            if (Control != null)
            {
                List.ItemContainerStyle = App.Current.Resources["ItemStyle"] as Windows.UI.Xaml.Style;
            }

        }
    }
}

Upvotes: 1

Related Questions