5

我有这个在代码XAML中显示。将用作选择菜单。ListViewC++/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 选择

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

4

1 回答 1

16

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

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

这是来自 Blend 的带注释的屏幕截图: 在此处输入图像描述

于 2013-02-20T21:26:45.723 回答