2009-02-11 11 views
6

Questo problema deriva dall'impossibilità di far avvolgere il mio TextBlock. Fondamentalmente, come ultimo tentativo, sto impostando MaxWidth sulle colonne della mia griglia contenitore. Sono stato sorpreso di scoprire che l'etichetta e la casella di testo di mio figlio continuano a fare tutto ciò che vogliono (bambini cattivi, BAD) e non sono limitati dal MaxWidth della mia colonna di griglia = "200".WPF Grid Column MaxWidth non applicata

Quello che sto davvero cercando di fare è lasciare che il mio TextBlock riempia la larghezza disponibile e avvolga se necessario. Finora dopo aver provato molte varianti di HorizontalAlignment = "Stretch" su ogni genitore conosciuto nell'universo, non funziona nulla, tranne l'impostazione di un MaxWidth esplicito = "400" o qualsiasi numero sul TextBlock. Questo non va bene perché ho bisogno del TextBlock per riempire la larghezza disponibile, non essere limitato da un numero fisso. Grazie!

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

risposta

2

Ho cercato di replicare il problema incollando tutto tra gli elementi di griglia per Kaxaml ma tutto avvolge come ci si aspetterebbe a. (Ho inserito stringhe regolari dove stavi facendo binding e rimosso lo stile Label).

Potrebbe essere che il problema sia più in alto sull'albero.

Suggerisco di incollare blocchi in Kaxaml o simili per testare e vedere quale genitore interrompe l'interfaccia utente.

1

Ho fornito una risposta a questa domanda, solo che utilizzava un ListView invece di un ItemsControl ma il problema è probabilmente lo stesso. Probabilmente c'è un ScrollViewer che circonda il tuo ItemPresenter e devi modificare una copia del modello ItemsControl.

WPF ListView TextBlock TextWrapping