2009-08-18 6 views
1

J'ai ce ListView et j'utilise un DataTemplate (comme vous pouvez le voir) pour les articles. Comment puis-je ajouter des noms de colonnes à ListView avec cette définition ItemTemplate? Je ne peux pas utiliser cette définition GridViewColumn, car cette ListView utilise un chargement de données paresseux, donc quand il y a trop de lignes, il les récupère à la demande. GridViewColumn ne fonctionne pas en quelque sorte avec ce chargement paresseux.WPF ListView avec les noms de colonnes?

<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> 

Répondre

3

Je ne pense pas qu'il y ait un point quelconque à utiliser un ListView si, comme vous le dites, vous ne pouvez pas utiliser GridView (ou tout autre point de vue). Je voudrais échanger ListView pour ItemsControl (ou ListBox si vous avez besoin d'un article sélectionnable ou de toute autre chose que ListBox offres).

Si ce que vous dites est vrai, vous pouvez simplement utiliser un panneau de pile pour positionner une ligne d'en-tête au-dessus de vos lignes de données:

<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> 

espoir qui aide. Vous aimerez peut-être aussi lire sur les panneaux de virtualisation. Cela pourrait fournir le genre de paresse dont vous parlez.

Questions connexes