为通用Windows平台设置ListView悬停/选定状态的样式

时间:2015-11-28 23:35:51

标签: c# listview uwp

我想在通用Windows平台应用中更改ListView的默认样式。默认的ListView项目悬停为浅灰色,点击为浅蓝色,所选项目为深蓝色。

我尝试搜索并尝试了几乎所有代码,但没有成功。这是我对ListView的xaml:

<Page.Resources>
    <DataTemplate x:Key="MasterListViewItemTemplate" x:DataType="model:Thread">
        <Grid Margin="0,11,0,13">
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="35"/>
                <ColumnDefinition/>
            </Grid.ColumnDefinitions>
            <Ellipse Grid.Column="0" Width="35" Height="35" VerticalAlignment="Top">
                <Ellipse.Fill>
                    <ImageBrush ImageSource="{x:Bind Photo}"/>
                </Ellipse.Fill>
            </Ellipse>
            <TextBlock Grid.Column="1" Text="{x:Bind Name}"/>
        </Grid>
    </DataTemplate>
</Page.Resources>

<ListView
    x:Name="MasterListView"
    ItemContainerTransitions="{x:Null}"
    ItemTemplate="{StaticResource MasterListViewItemTemplate}"
    IsItemClickEnabled="True"
    ItemClick="MasterListView_ItemClick">
    <ListView.ItemContainerStyle>
        <Style TargetType="ListViewItem">
            <Setter Property="HorizontalContentAlignment" Value="Stretch" />
        </Style>
    </ListView.ItemContainerStyle>
</ListView>

1 个答案:

答案 0 :(得分:1)

所有这些都是在ListViewItem样式中定义的。您可以覆盖它并轻松更改所需的值。我不会复制粘贴完整的样式,因为它很大并且you can find it here

你也可以只覆盖几种打扰你的颜色。在同一个链接中,您会发现ListViewItemPresenter的属性如SelectedPressedBackground设置为ThemeResources。

SelectedPressedBackground="{ThemeResource SystemControlHighlightListAccentHighBrush}"

这意味着覆盖那些可能是您完成所需的最小值(Overried SystemControlHighlightListAccentHighBrush等),但请记住,这样做会覆盖完整应用程序的那些资源,这可能不是您所期望的