列表视图选择显示没有填充和没有选中标记
我有这个XAML
在C++/CX
代码中显示ListView
。 ListView
将用作选择菜单。列表视图选择显示没有填充和没有选中标记
<ListView x:Name="itemsListView"
ItemsSource="{Binding Source={StaticResource MenuDataSourceCVS}}"
HorizontalAlignment="Stretch"
Width="230"
Margin="0,45,0,0"
VerticalAlignment="Top"
Grid.Row="1"
SelectionChanged="itemsListView_SelectionChanged" SelectionMode="Single"
HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch"
FontFamily="Global User Interface">
<ListView.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal" Height="40" Width="230">
<TextBlock Text="{Binding Name}"
Margin="10,5" Width="150" Height="30"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"/>
<Border Height="30" Width="30" Margin="5">
<Image Source="{Binding ImageSrc}" Stretch="Fill"/>
</Border>
</StackPanel>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
正如您在下图中看到的,选择不占用所有列,并在选中时显示复选标记。
是否有消除这种填充和复选标记的方法吗?
您需要在Blend中打开您的视图,然后右键单击列表并选择“编辑附加模板”/“编辑生成的物品容器(ItemContainerStyle)”/“编辑复制”。然后,您可以编辑由ListView
生成的ListViewItem
生成的项目Style
。在左边的“国家”选项卡中,您可以看到ListViewItem
使用的状态。当你选择其中一个时 - 设计表面显示了ListViewItem在该状态下的样子,并且它也切换到录制模式,您可以在其中定义模板的各种元素属性的属性值。然后,您可以看到哪些元素受到视觉状态动画的影响,并修改这些动画或删除元素本身。如果删除Blend中的元素 - 所有相关的视觉状态动画将自动删除,因此在您的情况下,您可以看到SelectionStates
VisualStatesGroup
中的Selected
状态将SelectionBackground
元素的Opacity
更改为1.您可以修改目标Opacity
中的值所有状态将其修改为另一个所需的值,或者通过在“对象和时间线”面板中选择元素(它实际上将其从模板中移除所有状态并删除影响它的所有动画)来删除元素。那么你可能同样想要删除HintGlyphBorder, SelectingGlyph, SelectedCheckMarkOuter
。
删除填充 - 确保通过单击微小的红色录制按钮或将“状态”选项卡中当前显示的状态切换回“基本”来禁用录制状态,然后选择ContentBorder
并更改其状态Margin
的“属性”选项卡中设置为0,0,0,0,然后执行SelectedBorder
。
下面是混合的注释截图:
菲利普,这应该是一个博客文章。写下来,以便我可以链接到它! – 2013-02-21 18:39:45
为什么不链接到这个答案 - http://stackoverflow.com/questions/14987745/listview-selection-display-with-no-padding-and-no-checkmark/14990251#14990251? :) – 2013-02-21 18:45:53
认真地说,StackOverflow上有这么多优秀的资料 - 我很乐意在我的博客上提供一些我的答案,但我不确定它的价值,因为无论如何,每个人都会在这里看到。 – 2013-02-21 18:48:58