将Grid添加到ItemsControl的ItemsPanelTemplate

时间:2014-01-29 17:44:36

标签: c# .net wpf itemscontrol

我想在WPF中添加Grid作为ItemPanelTemplate的{​​{1}}。

我知道有很多类似的问题。但到目前为止我所看到的所有这些都是在谈论动态添加行和列,而且他们没有以一种好的方式覆盖它(在我看来)。

所以我想要的东西可能是最简单的形式但是我不知道怎么做。

当然我知道它不起作用。但这只是为了表达我的想法。

ItemsControl
  ----------------------------------------
  | #1 name     |  #1 trade name         |
  ---------------------------------------
  | GridView                             |
  |     Row1                             |
  |    Row2                              |
  |    .                                 |
  |    .                                 |
  |     RowN                             |  
  ----------------------------------------
  | #2 name     |  #2 trade name         |
  ----------------------------------------
  | GridView                             |
  |    Row1                              |
  |    Row2                              |
  |    .                                 |
  |    .                                 |
  |     RowN                             | 
  ----------------------------------------
  ...

1 个答案:

答案 0 :(得分:3)

无需更改ItemsPanel的默认值(StackPanel)。只需将Grid放在ItemTemplate中。像这样:

<ItemsControl>
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <Grid>
                <Grid.RowDefinitions>
                    <RowDefinition />
                    <RowDefinition />
                </Grid.RowDefinitions>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition />
                    <ColumnDefinition />
                    <ColumnDefinition />
                </Grid.ColumnDefinitions>                
                <TextBlock  Text="{Binding ArticleName}" Grid.Row="0" Grid.Column="0" />
                <TextBlock  Text="{Binding ArticleTradeName}" Grid.Row="0" Grid.Column="1" />
                <ListView ItemsSource="{Binding Samples}" Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="3">
                    <ListView.View>
                        <GridView>
                            .
                            .
                            .
                        <GridView>
                    </ListView.View>
                </ListView>
            </Grid>
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>