2009-01-15 9 views
0

J'ai une vue liste de données et peut définir manuellement toutes les largeurs de colonnes, sauf la dernière. La longueur des données du dernier champ varie considérablement. La dernière colonne doit être développée pour gérer la largeur des données et, si elle est plus grande, défiler. J'ai essayé de définir la largeur de la dernière colonne à un très grand nombre, mais cela entraîne l'en-tête de colonne de la page. Comment puis-je calculer la largeur minimale que la dernière colonne doit avoir pour afficher les données et si elle est grande pour conserver l'en-tête de colonne sur la page?Comment définir automatiquement la largeur des colonnes d'un ListView

<ListView x:Name="ListViewFlightPlans" Background="#FF000000" IsSynchronizedWithCurrentItem="True" Width="659.5" Height="Auto" 
         Foreground="#FFFDF3F3" BorderBrush="{x:Null}" VerticalAlignment="Bottom" Visibility="Hidden" > 
       <ListView.View> 
        <GridView> 
         <GridViewColumn Header="CID" DisplayMemberBinding="{Binding Path=CID}" Width="50"/> 
         <GridViewColumn Header="Callsign" DisplayMemberBinding="{Binding Path=ACID}" Width="65"/> 
         <GridViewColumn Header="Type" DisplayMemberBinding="{Binding Path=Type}" Width="65"/> 
         <GridViewColumn Header="Route" DisplayMemberBinding="{Binding Path=Route}" Width="900 e"/> 
        </GridView> 
       </ListView.View> 
      </ListView> 

Répondre

1

Parce que votre en-tête quitte la page, je suppose que vos en-têtes sont alignés au centre ou à droite. Alignez à gauche l'en-tête pour qu'il reste en place (vous pouvez ajouter un remplissage à gauche pour simuler un en-tête centré ou aligné à droite). Utilisez Width = "Auto" pour agrandir la largeur de la colonne en fonction de l'élément le plus large de la colonne.

Exemple:

<GridViewColumn Header="Route" DisplayMemberBinding="{Binding Path=Route}" 
    Width="Auto" 
    HeaderContainerStyle="{StaticResource WideColumnHeader}" 
/> 
... 
‹!--Somewhere in your resources--› 
... 
‹Style x:Key="WideColumnHeader" TargetType="{x:Type GridViewColumnHeader}"› 
    ‹Setter Property="HorizontalContentAlignment" Value="Left" /› 
    ‹Setter Property="Padding" Value="40,0,0,0" 
‹/Style› 
... 
0

Vous pouvez essayer d'utiliser% au lieu de pixels et peut-être allouer 60% à la dernière colonne whilest 40% pourrait être utilisée par les 3 premières colonnes .... (estimation non testé).

Questions connexes