2009-02-11 8 views
6

Ce problème provient du fait que mon TextBlock ne peut pas être bouclé. Fondamentalement, en tant que tentative de dernier recours, je mets MaxWidth sur les colonnes de ma grille de conteneur. J'ai été surpris de constater que mon label enfant et ma zone de texte font toujours ce qu'ils veulent (mauvais enfants, BAD) et ne sont pas limités par MaxWidth = "200".WPF Grid Column MaxWidth non appliqué

Ce que j'essaie vraiment de faire est de laisser mon TextBlock remplir la largeur disponible et l'envelopper si nécessaire. Jusqu'à présent, après avoir essayé de nombreuses variantes de HorizontalAlignment = "Stretch" sur tous les parents connus dans l'univers, rien ne fonctionne, sauf la définition d'une MaxWidth explicite = "400" ou n'importe quel nombre sur le TextBlock. Ce n'est pas bon parce que j'ai besoin du TextBlock pour remplir la largeur disponible, ne pas être limité par un nombre fixe. Merci!

<ItemsControl> 
    <ItemsControl.ItemsPanel> 
     <ItemsPanelTemplate> 
      <StackPanel /> 
     </ItemsPanelTemplate> 
    </ItemsControl.ItemsPanel> 
    <ItemsControl.ItemTemplate> 
     <DataTemplate> 
      <Grid> 
      <Grid.ColumnDefinitions> 
       <ColumnDefinition MaxWidth="200" SharedSizeGroup="A" /> 
       <ColumnDefinition MaxWidth="200" SharedSizeGroup="B" /> 
      </Grid.ColumnDefinitions> 

      <Label VerticalAlignment="Top" Margin="0 5 0 0" Grid.Column="0" Style="{StaticResource LabelStyle}" Width="Auto" Content="{Binding Value.Summary}" /> 
      <TextBlock Grid.Column="1" Margin="5,8,5,8" FontWeight="Normal" 
         Background="AliceBlue" 
         Foreground="Black" Text="{Binding Value.Description}" 
         HorizontalAlignment="Stretch" 
         TextWrapping="Wrap" Height="Auto" /> 
      </Grid> 
     </DataTemplate> 
    </ItemsControl.ItemTemplate> 
</ItemsControl> 

Répondre

2

J'ai essayé de reproduire votre problème en collant tout entre vos éléments de grille pour Kaxaml mais tout enveloppements vous attendez. (J'ai inséré des chaînes régulières où vous faisiez des liaisons et enlevé le style Label).

Il se peut que le problème soit plus haut dans l'arbre.

Je suggérerais de coller des blocs dans Kaxaml ou similaire à tester et voir quel parent rompt votre interface utilisateur.

1

J'ai fourni une réponse à cette question, seulement il utilisait un ListView au lieu d'un ItemsControl mais le problème est probablement le même. Il y a probablement un ScrollViewer qui entoure votre ItemPresenter et vous devez éditer une copie du template ItemsControl.

WPF ListView TextBlock TextWrapping