2014-10-08 65 views
0

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

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

回答

0

这个问题已经在此forum

已回答马格努斯“你设定了整个GroupItem的保证金你应为第一列定义一个CellTemplate并在其中设置边距:“

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