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

时间:2013-02-20 18:54:05

标签: listview windows-8 windows-runtime winrt-xaml c++-cx

我有XAMLListView代码中显示C++/CXListView将用作选择菜单。

<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

有没有办法消除这种填充和复选标记?

1 个答案:

答案 0 :(得分:16)

您需要在Blend中打开视图,然后右键单击列表并选择“编辑其他模板”/“编辑生成的项目容器(ItemContainerStyle)”/“编辑副本”。然后,您可以修改Style生成的ListViewItemListView填充项目时ListViewItem。在左侧的“状态”标签中,您可以看到SelectionStates使用的状态。当您选择其中一个时 - 设计图面显示ListViewItem在该状态下的样子,并且它还切换到记录模式,您可以在其中定义模板的各种元素属性的属性值。然后,您可以查看哪些元素受到可视状态动画的影响,并修改这些动画或删除元素本身。如果您删除Blend中的元素 - 所有相关的可视状态动画都会自动删除,因此在您的情况下,您可以看到VisualStatesGroup Selected SelectionBackground状态更改{{1元素的Opacity到1.您可以修改所有状态中的目标Opacity值,将其修改为另一个所需的值,或者只需通过在“对象”中选择它来删除SelectionBackground元素和时间轴“面板(它实际上将从模板中删除所有状态并删除所有影响它的动画)。然后,您可能同样想删除HintGlyphBorder, SelectingGlyph, SelectedCheckMarkOuter

要删除填充 - 请确保通过单击微小的红色录制按钮或将“状态”选项卡中当前显示的状态切换回“基准”来禁用状态录制,然后选择ContentBorder并将“属性”标签中的Margin更改为0,0,0,0并对SelectedBorder执行相同操作。

以下是Blend的带注释的截图: enter image description here