带列名的WPF ListView?

时间:2009-08-18 11:22:26

标签: wpf listview

我有这个ListView,我正在使用DataTemplate(如你所见)的项目。 如何使用此ItemTemplate定义将列名添加到ListView? 我无法使用GridViewColumn定义,因为此ListView使用延迟数据加载,因此当行数太多时,它会根据需要获取它们。 GridViewColumn以某种方式无法使用此延迟加载。

<ListView Grid.Row="3">
            <ItemsControl.ItemTemplate>
                <DataTemplate>
                    <Grid x:Name="grid" Background="Transparent" MinWidth="580" >
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="220" />
                            <ColumnDefinition Width="100" />
                            <ColumnDefinition Width="100" />
                            <ColumnDefinition Width="70"/>
                            <ColumnDefinition Width="80"/>
                        </Grid.ColumnDefinitions>
                        <TextBlock VerticalAlignment="Center" Grid.Column="0" Text="{Binding Path=Benutzer.Value.Code}"/>
                        <TextBlock VerticalAlignment="Center" Grid.Column="1" Text="{Binding Path=Nachname}"/>
                        <TextBlock VerticalAlignment="Center" Grid.Column="2" Text="{Binding Path=Vorname}"/>
                        <TextBlock VerticalAlignment="Center" Grid.Column="3">
                                <TextBlock.Text>
                                    <Binding Path="GeburtDate" StringFormat="{}{0:d}"/>
                                </TextBlock.Text>
                        </TextBlock>
                        <Button VerticalAlignment="Center" Grid.Column="4" Style="{StaticResource StyleEditButton}" Content="Öffnen..." Tag="{Binding}"  Click="OpenPersonButton_Click"/>
                    </Grid>
                </DataTemplate>
            </ItemsControl.ItemTemplate>
        </ListView>

1 个答案:

答案 0 :(得分:3)

如果你说不能使用ListView(或任何其他观点),我认为使用GridView没有任何意义。如果您需要一个可选择的项目或ListView提供的任何其他内容,我会ItemsControl(或ListBox交换ListBox

如果您说的是真的,您可以使用堆栈面板将标题行放在数据行上方:

<StackPanel>
  <!-- Header -->
  <StackPanel Orientation="Horizontal">
    <TextBlock Width="220" TextAlignment="Center" Text="Code" />
    <TextBlock Width="100" TextAlignment="Center" Text="Nachname" />
    <TextBlock Width="100" TextAlignment="Center" Text="Vorname" />
    <TextBlock Width="70"  TextAlignment="Center" Text="GeburtDate" />
  </StackPanel>
  <!-- Data rows -->
  <ItemsControl>
    <ItemsControl.ItemTemplate>
        <DataTemplate>
          <StackPanel Orientation="Horizontal" MinWidth="580">
            <TextBlock Width="220" TextAlignment="Center" Text="{Binding Path=Benutzer.Value.Code}" />
            <TextBlock Width="100" TextAlignment="Center" Text="{Binding Path=Nachname}" />
            <TextBlock Width="100" TextAlignment="Center" Text="{Binding Path=Vorname}" />
            <TextBlock Width="70"  TextAlignment="Center" Text="{Binding Path=GeburtDate, StringFormat={0:d}}" />
            <Button VerticalAlignment="Center" Grid.Column="4" Style="{StaticResource StyleEditButton}" Content="Öffnen..." Tag="{Binding}"  Click="OpenPersonButton_Click"/>
          </StackPanel>
        </DataTemplate>
    </ItemsControl.ItemTemplate>
  </ItemsControl>
</StackPanel>

希望有所帮助。您可能还想阅读有关虚拟化面板的信息。这可能会提供你所谈论的那种懒惰。