在ListView的GridView中缩进第一列

时间:2014-10-08 00:52:51

标签: c# listview gridview expander

我使用列表视图创建了一个gridview。 有2级节点,我想缩进子节点。 因此,我在<ItemPresenter>中设置了保证金。 结果看起来不错,但第二列和第三列也是缩进的,并且根据其标题列不对齐。 是否只想缩进第一列但不缩进其余列?

XAML

<ListView Name="listViewResult" Margin="10,231,0,-299" BorderBrush="#FF000000" BorderThickness="1" >
                <ListView.View>
                    <GridView>
                        <GridViewColumn Header="Name" Width="280" DisplayMemberBinding="{Binding GrandChildNodeData}" />
                        <GridViewColumn Header="Date/ Time" Width="160" DisplayMemberBinding="{Binding Time}" />
                        <GridViewColumn Header="State" Width="160" DisplayMemberBinding="{Binding State}" />
                    </GridView>
                </ListView.View>

                <ListView.GroupStyle>
                    <GroupStyle>
                        <GroupStyle.ContainerStyle>
                            <Style TargetType="{x:Type GroupItem}">
                                <Setter Property="Template">
                                    <Setter.Value>
                                        <ControlTemplate>
                                            <Expander IsExpanded="True">
                                                <Expander.Header>
                                                    <StackPanel Orientation="Horizontal">
                                                        <TextBlock Text="{Binding Name}" FontWeight="Bold" VerticalAlignment="Bottom" />
                                                        <TextBlock Text="{Binding ItemCount}" Foreground="Silver" FontStyle="Italic" Margin="10,0,0,0" VerticalAlignment="Bottom" />
                                                        <TextBlock Text=" item(s)" Foreground="Silver" FontStyle="Italic" VerticalAlignment="Bottom" />
                                                    </StackPanel>
                                                </Expander.Header>
                                                <ItemsPresenter Margin="20,0,0,0" />
                                            </Expander>
                                        </ControlTemplate>
                                    </Setter.Value>
                                </Setter>
                            </Style>
                        </GroupStyle.ContainerStyle>
                    </GroupStyle>
                </ListView.GroupStyle>
            </ListView>

结果

enter image description here

1 个答案:

答案 0 :(得分:0)

Magnus在forum

中已回答了这个问题

&#34;您正在设置整个GroupItem的保证金。您应该为第一列定义CellTemplate并在其中设置边距:&#34;

<ListView.View>
        <GridView>
          <GridViewColumn Header="Name" Width="120">
            <GridViewColumn.CellTemplate>
              <DataTemplate>
                <TextBlock Text="{Binding Name}" Margin="20 0 0 0"/>
              </DataTemplate>
            </GridViewColumn.CellTemplate>
          </GridViewColumn>
          <GridViewColumn Header="Date/ Time" Width="160" DisplayMemberBinding="{Binding Time}" />
          <GridViewColumn Header="State" Width="160" DisplayMemberBinding="{Binding State}" />
        </GridView>
      </ListView.View>
        <ListView.GroupStyle>
        <GroupStyle>
          <GroupStyle.ContainerStyle>
            <Style TargetType="{x:Type GroupItem}">
              <Setter Property="Template">
                <Setter.Value>
                  <ControlTemplate>
                    <Expander IsExpanded="True">
                      <Expander.Header>
                        <StackPanel Orientation="Horizontal">
                          <TextBlock Text="{Binding Name}" FontWeight="Bold" VerticalAlignment="Bottom" />
                          <TextBlock Text="{Binding ItemCount}" Foreground="Silver" FontStyle="Italic" Margin="10,0,0,0" VerticalAlignment="Bottom" />
                          <TextBlock Text=" item(s)" Foreground="Silver" FontStyle="Italic" VerticalAlignment="Bottom" />
                        </StackPanel>
                      </Expander.Header>
                      <ItemsPresenter />
                    </Expander>
                  </ControlTemplate>
                </Setter.Value>
              </Setter>
            </Style>
          </GroupStyle.ContainerStyle>
        </GroupStyle>
      </ListView.GroupStyle>