列表视图选择显示没有填充和没有选中标记

问题描述:

我有这个XAMLC++/CX代码中显示ListViewListView将用作选择菜单。列表视图选择显示没有填充和没有选中标记

<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> 

正如您在下图中看到的,选择不占用所有列,并在选中时显示复选标记。

ListView Selection with checkmark and padding

是否有消除这种填充和复选标记的方法吗?

您需要在Blend中打开您的视图,然后右键单击列表并选择“编辑附加模板”/“编辑生成的物品容器(ItemContainerStyle)”/“编辑复制”。然后,您可以编辑由ListView生成的ListViewItem生成的项目Style。在左边的“国家”选项卡中,您可以看到ListViewItem使用的状态。当你选择其中一个时 - 设计表面显示了ListViewItem在该状态下的样子,并且它也切换到录制模式,您可以在其中定义模板的各种元素属性的属性值。然后,您可以看到哪些元素受到视觉状态动画的影响,并修改这些动画或删除元素本身。如果删除Blend中的元素 - 所有相关的视觉状态动画将自动删除,因此在您的情况下,您可以看到SelectionStatesVisualStatesGroup中的Selected状态将SelectionBackground元素的Opacity更改为1.您可以修改目标Opacity中的值所有状态将其修改为另一个所需的值,或者通过在“对象和时间线”面板中选择元素(它实际上将其从模板中移除所有状态并删除影响它的所有动画)来删除元素。那么你可能同样想要删除HintGlyphBorder, SelectingGlyph, SelectedCheckMarkOuter

删除填充 - 确保通过单击微小的红色录制按钮或将“状态”选项卡中当前显示的状态切换回“基本”来禁用录制状态,然后选择ContentBorder并更改其状态Margin的“属性”选项卡中设置为0,0,0,0,然后执行SelectedBorder

下面是混合的注释截图: enter image description here

+5

菲利普,这应该是一个博客文章。写下来,以便我可以链接到它! – 2013-02-21 18:39:45

+0

为什么不链接到这个答案 - http://*.com/questions/14987745/listview-selection-display-with-no-padding-and-no-checkmark/14990251#14990251? :) – 2013-02-21 18:45:53

+2

认真地说,*上有这么多优秀的资料 - 我很乐意在我的博客上提供一些我的答案,但我不确定它的价值,因为无论如何,每个人都会在这里看到。 – 2013-02-21 18:48:58