2009-02-11 9 views
6

Dieses Problem rührt von nicht in der Lage sein, meinen TextBlock zu umbrechen. Als letzten Versuch setze ich MaxWidth auf die Spalten meines Container-Rasters. Ich war überrascht zu sehen, dass mein Kind-Label und Textbox immer noch tun, was sie wollen (schlechte Kinder, BAD) und sind nicht durch meine Grid-Spalte MaxWidth = "200" begrenzt.WPF-Rasterspalte MaxWidth nicht erzwungen

Was ich wirklich versuche zu tun, ist mein TextBlock füllen verfügbare Breite und wickeln Sie bei Bedarf. Bis jetzt, nachdem Sie viele Variationen von HorizontalAlignment = "Stretch" auf jedem bekannten Elternteil im Universum versucht haben, funktioniert nichts, außer dass Sie eine explizite MaxWidth = "400" oder eine beliebige Zahl auf dem TextBlock setzen. Das ist nicht gut, weil ich den TextBlock brauche, um die verfügbare Breite zu füllen, und nicht durch irgendeine feste Zahl begrenzt werden. Vielen Dank!

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

Antwort

2

Ich habe versucht, das Problem durch zwischen den Gitterelementen in zu Kaxaml Einfügen alles zu replizieren, aber alles hüllt, wie Sie es erwarten würden. (Ich habe reguläre Strings eingefügt, wo Sie Bindings gemacht und den Label-Stil entfernt haben).

Es könnte sein, dass das Problem höher ist der Baum.

Ich würde vorschlagen, Chunks in Kaxaml oder ähnlich einfügen, um zu testen und zu sehen, welche Eltern Ihre UI bricht.

1

Ich habe eine Antwort auf diese Frage zur Verfügung gestellt, nur dass es ein ListView anstelle eines ItemsControl verwendet, aber das Problem ist wahrscheinlich das gleiche. Wahrscheinlich umgibt ein ScrollViewer Ihren ItemPresenter und Sie müssen eine Kopie der ItemsControl-Vorlage bearbeiten.

WPF ListView TextBlock TextWrapping