xaml - UWP-CPP/Winrt 设置 ListViewItem 悬停/选中时的圆角半径
问题描述
我打算使用 ListView 显示对象列表。根据设计,ListViewItem 周围的矩形的角应该是圆角的。尝试了多种方法来实现相同的目标,但找不到解决方案。
<ListView
x:Name="ObjectList"
ItemsSource="{x:Bind ObjectViewModel.Objects}"
SelectionChanged="ListViewButtonClick"
MaxWidth ="{StaticResource ColumnMaximumWidth}"
VerticalAlignment = "Center"
HorizontalContentAlignment = "Stretch"
ScrollViewer.HorizontalScrollBarVisibility ="Disabled"
SelectionMode ="Single" />
<ListView.Resources>
<SolidColorBrush x:Key="ListViewItemBackgroundSelected" Color="Green" />
<SolidColorBrush x:Key="ListViewItemBackgroundSelectedPointerOver" Color="Green" />
</ListView.Resources>
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Setter Property="Margin" Value="0,0,0,30" />
</Style>
</ListView.ItemContainerStyle>
<ItemsControl.ItemTemplate>
<DataTemplate x:DataType="local:ObjectModel">
<Border
BorderBrush="Red"
BorderThickness="3"
CornerRadius="5">
<Grid MinHeight="66" CornerRadius="8">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto" />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<FontIcon
FontSize="17"
Glyph=""
Style="{StaticResource FontIconStyle1}" />
<TextBlock
Grid.Column="1"
Style="{StaticResource AddBluetoothLabelTextStyle}"
Text="{x:Bind ObjectName, Mode=OneWay}" />
</Grid>
</Border>
</ItemsControl.ItemTemplate>
</ListView>
如图所示,所选/悬停项目的角不是圆角的。你能帮助如何实现这一目标吗?TIA
解决方案
您需要更改样式中的VisualState
to 集。CornerRadius
ListViewItem
ListViewItem
请检查以下步骤:
- 打开
generic.xaml
文件,找到一个Style
whoTargetType
isListViewItem
和Key
isListViewItemRevealStyle
。将样式复制到您的Page.Resources
. - 删除样式的
x:Key
属性,使该样式可以ListViewItem
在当前页面中全部使用。 - 找到一个
VisualState
名字为 的Selected
,添加如下代码:
<VisualState x:Name="Selected">
<VisualState.Setters>
<Setter Target="Root.CornerRadius" Value="10" />
</VisualState.Setters>
</VisualState>
- 查找
VisualState
名称为PointerOver
,PointerOverSelected
,PointerOverPressed
,的s,分别PointerOverPressed
添加以下代码:
<Setter Target="Root.CornerRadius" Value="10" /> <!--Add this code-->
- 删除与样式
ListView.ItemContainerStyle
冲突的语句。ListViewItem’s
注意,最好先按照上面的步骤在样式中设置圆角半径,ListViewItem
然后再添加其他样式或设置,这样可以保证ListViewItem
工作样式中的设置。
推荐阅读
- locust - 蝗虫没有跑
- python - 当我运行下面的程序时,在带有 ROCm 的 AMD GPU 上使用 Tensorflow 和 Keras 使用 Python 进行深度学习会出错
- flutter - 在 Flutter 中有没有办法切换谷歌地图上标记的可见性?
- jquery - 链接到页面然后打开 JQuery 选项卡
- django - 如何将具有初始值的新字段添加到 django 查询集结果?
- javascript - 将逗号分隔的字符串转换为逗号分隔的数字
- javascript - 导入对象并在数组中使用它会使第一项未定义?
- apache-spark - Sparkdl 故障排除 Py4JJavaError: 调用 o99.collectToPython 时出错
- jquery - 添加 jquery 生成的
用于围绕两个 jquery 生成的 div 的容器 - javascript - 将 package.json 更改为 node_modules 中的内容