C#UWP ListView删除所有视觉效果

时间:2018-11-09 10:55:19

标签: c# listview uwp styles mousehover

在UWP中,我有一个列表视图。

XAML:

 <Grid Background="Gray">
    <ListView Name="lvMain" VerticalAlignment="Top" HorizontalAlignment="Stretch" Height="120" ItemsSource="{x:Bind ItemsList, Mode=OneWay}">
        <ListView.ItemsPanel>
            <ItemsPanelTemplate>
                <ItemsStackPanel Orientation="Horizontal"/>
            </ItemsPanelTemplate>
        </ListView.ItemsPanel>
        <ListView.ItemTemplate>
            <DataTemplate x:DataType="x:Int32">
                <Grid Width="100" Height="100" Padding="10">
                    <Grid Background="Green"/>
                </Grid>
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>
</Grid>

在后面的代码中:

using System.Collections.ObjectModel;
using Windows.UI.Xaml.Controls;

public sealed partial class MainPage : Page
{
    public ObservableCollection<int> ItemsList { get; set; } = new ObservableCollection<int>();

    public MainPage()
    {
        InitializeComponent();

        for (int i = 0; i < 10; i++)
        {
            ItemsList.Add(i);
        }
    }
}

结果如下:

enter image description here

如何从列表视图中删除鼠标悬停时的所有效果/灯光?

2 个答案:

答案 0 :(得分:1)

the default style and template for ListViewItem中定义了将鼠标悬停在某个项目上时看到的突出显示颜色。

具体地说,以默认样式搜索此行

PointerOverBackground="{ThemeResource SystemControlHighlightListLowBrush}"

您可以为ListViewItem创建特殊样式并将此颜色设置为Transparent,然后将特殊样式应用于ListView

此页面提供了work with styles的指南。

编辑:我刚刚发现this post在问类似的问题,被接受的答案显示了如何在Visual Studio中编辑模板。

答案 1 :(得分:1)

  

项目之间的线条如何?

添加到@kennyzx的回复中。您正在谈论的行实际上是Reveal Highlight。您可以在const points = [[1], [2, 3]]; const new_points = ['a', 'b', 'c']; const createNewPoints = (points, new_points) => points.reduce( ([result, counter], items) => [ result.concat([ items.map((_, i) => new_points[i + counter]), ]), counter + items.length, ], [[], 0], )[0]; console.log(createNewPoints(points, new_points));中看到ListViewItem的默认样式。

\(Program Files)\Windows Kits\10\DesignTime\CommonConfiguration\Neutral\UAP\your sdk version\Generic\generic.xaml

您可能会看到它使用了许多“显示”主题资源。所有这些资源名称都包含单词“ Reveal”。例如,<Style TargetType="ListViewItem" x:Key="ListViewItemRevealStyle"> <Setter Property="FontFamily" Value="{ThemeResource ContentControlThemeFontFamily}" /> <Setter Property="FontSize" Value="{ThemeResource ControlContentThemeFontSize}" /> <Setter Property="Background" Value="{ThemeResource ListViewItemBackground}" /> <Setter Property="Foreground" Value="{ThemeResource ListViewItemForeground}" /> <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="AllowDrop" Value="False" /> <Setter Property="UseSystemFocusVisuals" Value="{StaticResource UseSystemFocusVisuals}" /> <Setter Property="FocusVisualMargin" Value="0" /> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="ListViewItem"> <ListViewItemPresenter ContentTransitions="{TemplateBinding ContentTransitions}" x:Name="Root" Control.IsTemplateFocusTarget="True" FocusVisualMargin="{TemplateBinding FocusVisualMargin}" SelectionCheckMarkVisualEnabled="{ThemeResource ListViewItemSelectionCheckMarkVisualEnabled}" CheckBrush="{ThemeResource ListViewItemCheckBrush}" CheckBoxBrush="{ThemeResource ListViewItemCheckBoxBrush}" DragBackground="{ThemeResource ListViewItemDragBackground}" DragForeground="{ThemeResource ListViewItemDragForeground}" FocusBorderBrush="{ThemeResource ListViewItemFocusBorderBrush}" FocusSecondaryBorderBrush="{ThemeResource ListViewItemFocusSecondaryBorderBrush}" PlaceholderBackground="{ThemeResource ListViewItemPlaceholderBackground}" PointerOverBackground="{ThemeResource ListViewItemBackgroundPointerOver}" PointerOverForeground="{ThemeResource ListViewItemForegroundPointerOver}" SelectedBackground="{ThemeResource ListViewItemBackgroundSelected}" SelectedForeground="{ThemeResource ListViewItemForegroundSelected}" SelectedPointerOverBackground="{ThemeResource ListViewItemBackgroundSelectedPointerOver}" PressedBackground="{ThemeResource ListViewItemBackgroundPressed}" SelectedPressedBackground="{ThemeResource ListViewItemBackgroundSelectedPressed}" DisabledOpacity="{ThemeResource ListViewItemDisabledThemeOpacity}" DragOpacity="{ThemeResource ListViewItemDragThemeOpacity}" ReorderHintOffset="{ThemeResource ListViewItemReorderHintThemeOffset}" HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}" VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}" ContentMargin="{TemplateBinding Padding}" CheckMode="{ThemeResource ListViewItemCheckMode}" RevealBackground="{ThemeResource ListViewItemRevealBackground}" RevealBorderThickness="{ThemeResource ListViewItemRevealBorderThemeThickness}" RevealBorderBrush="{ThemeResource ListViewItemRevealBorderBrush}"> <VisualStateManager.VisualStateGroups> <VisualStateGroup x:Name="CommonStates"> <VisualState x:Name="Normal" /> <VisualState x:Name="Selected" /> <VisualState x:Name="PointerOver"> <VisualState.Setters> <Setter Target="Root.(RevealBrush.State)" Value="PointerOver" /> <Setter Target="Root.RevealBorderBrush" Value="{ThemeResource ListViewItemRevealBorderBrushPointerOver}" /> </VisualState.Setters> </VisualState> <VisualState x:Name="PointerOverSelected"> <VisualState.Setters> <Setter Target="Root.(RevealBrush.State)" Value="PointerOver" /> <Setter Target="Root.RevealBorderBrush" Value="{ThemeResource ListViewItemRevealBorderBrushPointerOver}" /> </VisualState.Setters> </VisualState> <VisualState x:Name="PointerOverPressed"> <VisualState.Setters> <Setter Target="Root.(RevealBrush.State)" Value="Pressed" /> <Setter Target="Root.RevealBorderBrush" Value="{ThemeResource ListViewItemRevealBorderBrushPressed}" /> </VisualState.Setters> </VisualState> <VisualState x:Name="Pressed"> <VisualState.Setters> <Setter Target="Root.(RevealBrush.State)" Value="Pressed" /> <Setter Target="Root.RevealBorderBrush" Value="{ThemeResource ListViewItemRevealBorderBrushPressed}" /> </VisualState.Setters> </VisualState> <VisualState x:Name="PressedSelected"> <VisualState.Setters> <Setter Target="Root.(RevealBrush.State)" Value="Pressed" /> <Setter Target="Root.RevealBorderBrush" Value="{ThemeResource ListViewItemRevealBorderBrushPressed}" /> </VisualState.Setters> </VisualState> </VisualStateGroup> <VisualStateGroup x:Name="DisabledStates"> <VisualState x:Name="Enabled" /> <VisualState x:Name="Disabled"> <VisualState.Setters> <Setter Target="Root.RevealBorderThickness" Value="0" /> </VisualState.Setters> </VisualState> </VisualStateGroup> </VisualStateManager.VisualStateGroups> </ListViewItemPresenter> </ControlTemplate> </Setter.Value> </Setter> </Style>

如果您不想要,可以全部替换。