2012-01-16 69 views
0

我想作相同的ListView/DataGird类似如下:的ListView /在细胞多行的DataGrid

enter image description here

第一:我不知道这是否是一个ListView或一个DataGrid,我怎么能知道?
第二:我该怎么做? (正如你所看到的,第一个单元格中有Icon,第二个单元被分成3行>设备名称,设备驱动程序和设备状态。第三个单元与体积计没有关系。

非常感谢!

回答

1

感谢HB,如果你只是想显示没有选择等,使用ItemsControlItemsControl

+0

ItemsControls没有选择,所以根据需要,这可能会也可能不是个好主意...... – 2012-01-16 17:29:08

+0

@ H.B。你是对的,非常感谢。 – Bolu 2012-01-16 17:37:52

+0

为我的目的提供更好的解决方案。不需要单独选择每个单元格,而是选择完整的行。谢谢。 – Ron 2012-01-16 18:04:16

1

你可以用ListView,ListBoxDataGrid来做到这一点,因为没有头文件,ListBox可能是最简单的。

只需使用Grid创建一个ItemTemplate,使用SharedSizeGroups可以使列的大小相同,在第二列中添加另一个具有三行文本的Grid。


在组合ListViewGridView但将提供的列了,所以你只需要在第二个栏创建一个网格,你可以风格折叠头。 (用作ListView.View

<ListView.Resources> 
    <Style TargetType="{x:Type GridViewColumnHeader}"> 
     <Setter Property="Visibility" Value="Collapsed"/> 
    </Style> 
</ListView.Resources> 

GridView例如:

<GridView> 
    <GridViewColumn> 
     <GridViewColumn.CellTemplate> 
      <DataTemplate> 
       <Image Width="64" Height="64" Source="{Binding Icon}" /> 
      </DataTemplate> 
     </GridViewColumn.CellTemplate> 
    </GridViewColumn> 
    <GridViewColumn> 
     <GridViewColumn.CellTemplate> 
      <DataTemplate> 
       <Grid> 
        <Grid.RowDefinitions> 
         <RowDefinition /> 
         <RowDefinition /> 
         <RowDefinition /> 
        </Grid.RowDefinitions> 
        <TextBlock Grid.Row="0" Text="{Binding Name}" /> 
        <TextBlock Grid.Row="1" Text="{Binding Manufacturer}" Foreground="Gray" /> 
        <TextBlock Grid.Row="2" Text="{Binding Status}" Foreground="Gray" /> 
       </Grid> 
      </DataTemplate> 
     </GridViewColumn.CellTemplate> 
    </GridViewColumn> 
</GridView> 
+0

虽然你的回答是更沉浸在博鲁的回答中对我来说更好。我不需要单独选择每个单元格,而是完整的行。因此我将Bolu解决方案标记为已接受。感谢您的时间和解决方案。 – Ron 2012-01-16 18:03:40

+2

@Ron:我想你误会了,如果你使用'ListBoxe'或'ListView'你会*选择完整的行,'ItemsControls'另一方面**没有任何选择**。 – 2012-01-16 18:58:36