通用 Windows 平台的 ListView hovered/selected 状态样式
Styling ListView hovered/selected state for Universal Windows Platform
我想更改通用 Windows 平台应用程序中 ListView
的默认样式。默认 ListView
项目的悬停颜色为浅灰色,点击为浅蓝色,选定项目为深蓝色。
我试着搜索了一下,几乎每一段代码都试过了,但没有成功。这是我的 xaml 的 ListView:
<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>
所有这些都在 ListViewItem 样式中定义。您可以覆盖它并轻松更改所需的值。我不会复制粘贴完整的样式,因为它很大而且 you can find it here.
您也可以只覆盖一些困扰您的颜色。同时link你会发现ListViewItemPresenter
有SelectedPressedBackground
等属性设置为ThemeResources.
SelectedPressedBackground="{ThemeResource SystemControlHighlightListAccentHighBrush}"
这意味着覆盖这些资源可能是您完成所需任务所需的最低限度(覆盖 SystemControlHighlightListAccentHighBrush 等),但请记住,这样做会覆盖完整应用程序的那些资源,这可能不是什么你期待
我想更改通用 Windows 平台应用程序中 ListView
的默认样式。默认 ListView
项目的悬停颜色为浅灰色,点击为浅蓝色,选定项目为深蓝色。
我试着搜索了一下,几乎每一段代码都试过了,但没有成功。这是我的 xaml 的 ListView:
<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>
所有这些都在 ListViewItem 样式中定义。您可以覆盖它并轻松更改所需的值。我不会复制粘贴完整的样式,因为它很大而且 you can find it here.
您也可以只覆盖一些困扰您的颜色。同时link你会发现ListViewItemPresenter
有SelectedPressedBackground
等属性设置为ThemeResources.
SelectedPressedBackground="{ThemeResource SystemControlHighlightListAccentHighBrush}"
这意味着覆盖这些资源可能是您完成所需任务所需的最低限度(覆盖 SystemControlHighlightListAccentHighBrush 等),但请记住,这样做会覆盖完整应用程序的那些资源,这可能不是什么你期待