2010-07-05 100 views

回答

4

这是不可能的工具包的DataGrid或GridView控件的ListView中,没有。

但是你可能有运气与自己的实现,因为我最近发现可以用GridViewHeaderRowPresenterMSDN reference),设置Columns属性你想要的列:这会给你一个标题行。

然后你可以在使用行GridViewRowPresenterMSDN reference),其连接到相同的Columns收集和瞧,您的列标题将被链接(调整头,列变化)。

在这里看到一个很好的例子:

http://msdn.microsoft.com/en-us/library/ms752313.aspx

为了得到堆叠效果,你可以创建一个ListViewListBox,并为每个项目你输出一对垂直堆积的GridViewRowPresenter控件,每个控件都绑定到单独的列集合。然后在你自己的自定义标题中(就在控件上方),你可以用一对GridViewHeaderRowPresenter控件做同样的事情。

然后,您可以添加其他任何您想要的位,例如他们在示例屏幕截图中显示的文本/标签。

没有理由,这不应该工作。这不是一个预先构建的解决方案,但可以使用干净的编码,这不是破解,而是完全控制它的外观和工作方式!添加排序等等也相当容易,MSDN也有一个例子。

希望有帮助 - 关于这个细节的任何更多的问题,请在这里添加评论!

4

看起来好像该截图中的控件是通过将图片右侧的每一列中的单元划分为多行来创建行跨度的错觉。也许你可以通过相同的方式来达到你正在寻找的行距效应。

<tk:DataGrid AutoGenerateColumns="False"> 
    <tk:DataGrid.Columns> 
     <tk:DataGridTextColumn Header="ID" Binding="{Binding ID}" /> 
     <tk:DataGridTemplateColumn Header="Photo"> 
      <tk:DataGridTemplateColumn.CellTemplate> 
       <DataTemplate> 
        <Image Source="{Binding Photo}" /> 
       </DataTemplate> 
      </tk:DataGridTemplateColumn.CellTemplate> 
     </tk:DataGridTemplateColumn> 
     <tk:DataGridTemplateColumn> 
      <tk:DataGridTemplateColumn.Header> 
       <Grid> 
        <Grid.RowDefinitions> 
         <RowDefinition /> 
         <RowDefinition /> 
        </Grid.RowDefinitions> 
        <TextBlock Grid.Row="0">FirstName</TextBlock> 
        <TextBlock Grid.Row="1">LastName</TextBlock> 
       </Grid> 
      </tk:DataGridTemplateColumn.Header> 
      <tk:DataGridTemplateColumn.CellTemplate> 
       <DataTemplate> 
        <Grid> 
         <Grid.RowDefinitions> 
          <RowDefinition /> 
          <RowDefinition /> 
         </Grid.RowDefinitions> 
         <TextBlock Grid.Row="0" Text="{Binding FirstName}" /> 
         <TextBlock Grid.Row="1" Text="{Binding LastName}" /> 
        </Grid> 
       </DataTemplate> 
      </tk:DataGridTemplateColumn.CellTemplate> 
     </tk:DataGridTemplateColumn> 
    </tk:DataGrid.Columns> 
</tk:DataGrid>