Максимальная ширина столбца сетки WPF не применяется - PullRequest
6 голосов
/ 12 февраля 2009

Эта проблема возникает из-за невозможности обернуть мой TextBlock. По сути, в качестве последней попытки я устанавливаю MaxWidth на столбцы моей контейнерной сетки. Я был удивлен, обнаружив, что моя дочерняя метка и текстовое поле по-прежнему делают все, что они хотят (плохие дети, ПЛОХО), и не ограничены значением MaxWidth = "200" в столбце сетки.

То, что я действительно пытаюсь сделать, это позволить моему TextBlock заполнить доступную ширину и при необходимости перенести. До сих пор после попытки многих вариантов HorizontalAlignment = "Stretch" для каждого известного родителя в юниверсе ничего не работает, кроме установки явного MaxWidth = "400" или любого другого числа в TextBlock. Это не хорошо, потому что мне нужно, чтобы TextBlock заполнял доступную ширину, а не ограничивался каким-то фиксированным числом. Спасибо!

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

Ответы [ 2 ]

2 голосов
/ 12 февраля 2009

Я пытался воспроизвести вашу проблему, вставив все элементы Grid в Kaxaml, но все оборачивается так, как вы ожидаете. (Я вставил обычные строки, где вы делали привязки, и удалил стиль Label).

Возможно, проблема в том, что выше дерево.

Я бы предложил вставить куски в Kaxaml или аналогичные для тестирования и посмотреть, какой родитель нарушает ваш интерфейс.

1 голос
/ 27 июля 2011

Я дал ответ на этот вопрос, только он использовал ListView вместо ItemsControl, но проблема, вероятно, та же. Скорее всего, ваш ItemPresenter окружен ScrollViewer, и вам нужно отредактировать копию шаблона ItemsControl.

WPF ListView TextBlock TextWrapping

...