2010-07-05 102 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>