与边距分组的WPF ListView样式问题

Bea*_*ker 8 .net wpf listview

在WPF中使用ListView 的分组功能时,样式左侧有一个小的边距.

具有分组问题的ListView示例(边距):

ListView,按名称分组

没有分组的ListView示例(在分组列表中需要相同样式的项目):

ListView,没有分组

题:

如何删除边距/填充?分组列表中的(选定)项应填充与未分组列表中相同的空间.

更新:

            <ListView Margin="20,0,0,0" ItemsSource="{Binding ItemsView}" SelectedItem="{Binding SelectedItem}" IsSynchronizedWithCurrentItem="True"  SelectionMode="Single" BorderThickness="0" Background="Transparent">
                <ListView.GroupStyle>
                    <GroupStyle>
                        <GroupStyle.HeaderTemplate>
                            <DataTemplate DataType="data:Item">
                                <DockPanel HorizontalAlignment="Stretch">
                                    <TextBlock Text="{Binding Name}" FontWeight="Bold" Margin="0,5,5,5" />
                                    <Separator  />
                                </DockPanel>
                            </DataTemplate>
                        </GroupStyle.HeaderTemplate>
                    </GroupStyle>
                </ListView.GroupStyle>
                <ListView.ItemTemplate>
                    <DataTemplate DataType="data:Item">
                        <TextBlock Margin="10,10,10,10" Text="{Binding Name}" />
                    </DataTemplate>
                </ListView.ItemTemplate>
            </ListView>
Run Code Online (Sandbox Code Playgroud)

Roe*_*rop 13

当在CollectionViewSource中使用分组时(我假设您正在使用分组),GroupItem将可视化Group.GroupItem的默认样式如下所示(使用StyleSnooper获得):

<Style TargetType="{x:Type GroupItem}" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
    <Setter Property="Control.Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type GroupItem}">
                <StackPanel>
                    <ContentPresenter Content="{TemplateBinding ContentControl.Content}" ContentTemplate="{TemplateBinding ContentControl.ContentTemplate}" ContentStringFormat="{TemplateBinding ContentControl.ContentStringFormat}" />
                    <ItemsPresenter Margin="5,0,0,0" />
                </StackPanel>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>
Run Code Online (Sandbox Code Playgroud)

如您所见,ItemsPresenter上有一个保证金.解决方案是为GroupItem创建自己的样式,并删除ItemsPresenter上的Margin,并设置GroupStyle.ContainerStyle以使用此样式.