Xaml 在UWP应用程序中设置所有ListViewItem的样式

Xaml 在UWP应用程序中设置所有ListViewItem的样式,xaml,uwp,xamarin.forms,windows-10-universal,listviewitem,Xaml,Uwp,Xamarin.forms,Windows 10 Universal,Listviewitem,我想更改ListViewItem的选定背景色。现在我注意到,默认值不会被覆盖 <Style TargetType="ListViewItem"> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="ListViewItem"> <ListViewItemPresenter

我想更改
ListViewItem
的选定背景色。现在我注意到,默认值不会被覆盖

<Style TargetType="ListViewItem">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="ListViewItem">
                <ListViewItemPresenter
                  ContentTransitions="{TemplateBinding ContentTransitions}"
                  SelectionCheckMarkVisualEnabled="True"
                  CheckBrush="{ThemeResource SystemControlForegroundBaseMediumHighBrush}"
                  CheckBoxBrush="{ThemeResource SystemControlForegroundBaseMediumHighBrush}"
                  DragBackground="{ThemeResource ListViewItemDragBackgroundThemeBrush}"
                  DragForeground="{ThemeResource ListViewItemDragForegroundThemeBrush}"
                  FocusBorderBrush="{ThemeResource SystemControlForegroundAltHighBrush}"
                  FocusSecondaryBorderBrush="{ThemeResource SystemControlForegroundBaseHighBrush}"
                  PlaceholderBackground="{ThemeResource ListViewItemPlaceholderBackgroundThemeBrush}"
                  PointerOverBackground="{ThemeResource SystemControlHighlightListLowBrush}"
                  PointerOverForeground="{ThemeResource SystemControlHighlightAltBaseHighBrush}"
                  SelectedBackground="{StaticResource YellowBrush}"
                  SelectedForeground="{ThemeResource SystemControlHighlightAltBaseHighBrush}"
                  SelectedPointerOverBackground="{ThemeResource SystemControlHighlightListAccentMediumBrush}"
                  PressedBackground="{ThemeResource SystemControlHighlightListMediumBrush}"
                  SelectedPressedBackground="{ThemeResource SystemControlHighlightListAccentHighBrush}"
                  DisabledOpacity="{ThemeResource ListViewItemDisabledThemeOpacity}"
                  DragOpacity="{ThemeResource ListViewItemDragThemeOpacity}"
                  ReorderHintOffset="{ThemeResource ListViewItemReorderHintThemeOffset}"
                  HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}"
                  VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}"
                  ContentMargin="{TemplateBinding Padding}"
                  CheckMode="Inline"/>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>
但是我只想设置
ListViewItem
的样式,而不影响其他样式

编辑:

因为我有

Visual Studio需要更新版本的WIndows来显示此内容。请更新到Windows 10周年纪念版(10.0.14393.0)或更高版本

我将目标版本设置为10240。这是我在创建Thomas Schneiter所述副本后在App.xaml中发现的:

<Application.Resources>
    <Style 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="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="Template">
            <Setter.Value>
                <ControlTemplate TargetType="ListViewItem">
                    <ListViewItemPresenter 
                        CheckBrush="{ThemeResource SystemControlForegroundBaseMediumHighBrush}" 
                        ContentMargin="{TemplateBinding Padding}" 
                        CheckMode="Inline"
                        ContentTransitions="{TemplateBinding ContentTransitions}" 
                        CheckBoxBrush="{ThemeResource SystemControlForegroundBaseMediumHighBrush}" 
                        DragForeground="{ThemeResource ListViewItemDragForegroundThemeBrush}" 
                        DragOpacity="{ThemeResource ListViewItemDragThemeOpacity}" 
                        DragBackground="{ThemeResource ListViewItemDragBackgroundThemeBrush}" 
                        DisabledOpacity="{ThemeResource ListViewItemDisabledThemeOpacity}"
                        FocusBorderBrush="{ThemeResource SystemControlForegroundAltHighBrush}" 
                        FocusSecondaryBorderBrush="{ThemeResource SystemControlForegroundBaseHighBrush}"
                        HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}" 
                        PointerOverForeground="{ThemeResource SystemControlHighlightAltBaseHighBrush}" 
                        PressedBackground="{ThemeResource SystemControlHighlightListMediumBrush}" 
                        PlaceholderBackground="{ThemeResource ListViewItemPlaceholderBackgroundThemeBrush}" 
                        PointerOverBackground="{ThemeResource SystemControlHighlightListLowBrush}" 
                        ReorderHintOffset="{ThemeResource ListViewItemReorderHintThemeOffset}" 
                        SelectedPressedBackground="{ThemeResource SystemControlHighlightListAccentHighBrush}" 
                        SelectionCheckMarkVisualEnabled="True" 
                        SelectedForeground="{ThemeResource SystemControlHighlightAltBaseHighBrush}" 
                        SelectedPointerOverBackground="{ThemeResource SystemControlHighlightListAccentMediumBrush}" 
                        SelectedBackground="{ThemeResource SystemControlHighlightListAccentLowBrush}" 
                        VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}"/>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
</Application.Resources>


现在我尝试覆盖
SelectedBackground
,但更改没有得到应用。

您可以右键单击Designer视图中的任何列表视图,然后选择
编辑其他模板
->
编辑生成的项目容器(项目容器样式)
->
编辑副本


然后选择
Apply to all
Application
自动将全局副本插入app.xaml。

ItemContainerStyle
的副本添加到你的app.xaml资源中,无需密钥即可使其成为你的应用程序的默认副本。你能发布链接到
ItemContainerStyle
的副本吗?我找不到,除了。似乎您正在使用xamarin.form,并使用xamarin的
ListView
控件?你解决这个问题了吗?@GraceFeng-MSFT:是的,没错。不,我还没解决。我想到了以下几种选择:1。创建一个自定义主题(看起来很粗糙)。2.创建自定义渲染器(但仅针对一个平台?)3。尝试覆盖事件,如
ItemSelected
,并从那里更改背景颜色。但我必须为每个
列表视图
执行此操作。理想情况下,我可以使用问题中所述的样式,但该样式不适用……现在我创建了您所述的副本(请参见我编辑的问题),但该样式不适用。我相信这是因为没有创建
ItemContainerStyle
元素?如果我将
SelectedBackground
更改为另一种颜色,它将应用于应用程序中的所有列表视图。
ItemContainerStyle
属性应该从
ListView
中删除,以使用全局定义的样式。现在,我从中尝试了该示例,背景确实得到了应用,但在我的实际应用程序中没有。我也尝试运用我最初的风格,在这里它也起作用。也许是一个框架问题(Xamarin.Forms)。了解更多信息后,我将提供一些信息。使用
ItemContainerStyle
可以定义Listview项的周围容器。
DataTemplate
用于在此容器中排列数据。可能您的
DataTemplate
中的控件有背景色,因此您看不到ItemContainer的背景?如何查找“DataTemplate”中的内容?树可视化工具?
<Application.Resources>
    <Style 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="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="Template">
            <Setter.Value>
                <ControlTemplate TargetType="ListViewItem">
                    <ListViewItemPresenter 
                        CheckBrush="{ThemeResource SystemControlForegroundBaseMediumHighBrush}" 
                        ContentMargin="{TemplateBinding Padding}" 
                        CheckMode="Inline"
                        ContentTransitions="{TemplateBinding ContentTransitions}" 
                        CheckBoxBrush="{ThemeResource SystemControlForegroundBaseMediumHighBrush}" 
                        DragForeground="{ThemeResource ListViewItemDragForegroundThemeBrush}" 
                        DragOpacity="{ThemeResource ListViewItemDragThemeOpacity}" 
                        DragBackground="{ThemeResource ListViewItemDragBackgroundThemeBrush}" 
                        DisabledOpacity="{ThemeResource ListViewItemDisabledThemeOpacity}"
                        FocusBorderBrush="{ThemeResource SystemControlForegroundAltHighBrush}" 
                        FocusSecondaryBorderBrush="{ThemeResource SystemControlForegroundBaseHighBrush}"
                        HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}" 
                        PointerOverForeground="{ThemeResource SystemControlHighlightAltBaseHighBrush}" 
                        PressedBackground="{ThemeResource SystemControlHighlightListMediumBrush}" 
                        PlaceholderBackground="{ThemeResource ListViewItemPlaceholderBackgroundThemeBrush}" 
                        PointerOverBackground="{ThemeResource SystemControlHighlightListLowBrush}" 
                        ReorderHintOffset="{ThemeResource ListViewItemReorderHintThemeOffset}" 
                        SelectedPressedBackground="{ThemeResource SystemControlHighlightListAccentHighBrush}" 
                        SelectionCheckMarkVisualEnabled="True" 
                        SelectedForeground="{ThemeResource SystemControlHighlightAltBaseHighBrush}" 
                        SelectedPointerOverBackground="{ThemeResource SystemControlHighlightListAccentMediumBrush}" 
                        SelectedBackground="{ThemeResource SystemControlHighlightListAccentLowBrush}" 
                        VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}"/>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
</Application.Resources>