Разрешение дочернему элементу управления ширины размера соответствовать и ограничение его максимального значения - PullRequest
0 голосов
/ 20 декабря 2011

Редактировать: я пытаюсь перефразировать мой вопрос, извините, если он не был ясен. В любом случае, спасибо.

Скажем, у меня есть UserControl, в макете которого есть сетка с 1 строкой по 3 столбца, первые 2 с авторазмером и третий с размером звезды:

<Grid>
<Grid.RowDefinitions>
        <RowDefinition/>
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="Auto"/>
        <ColumnDefinition Width="Auto"/>
        <ColumnDefinition />
    </Grid.ColumnDefinitions>
    <ComboBox MinWidth="80" MaxWidth="150" .../>
    <CheckBox Grid.Column="1" VerticalAlignment="Top".../>
    <TextBox Grid.Column="2" MaxHeight="400" TextWrapping="Wrap" HorizontalAlignment="Stretch"...>
</Grid>

TextBox имеет перенос текста, и его вертикальная полоса прокрутки видимости установлена ​​на автоматический режим, а горизонтальная видимость скрыта.

Теперь у меня есть окно, в том числе ListBox, элементы которого являются экземплярами этого UserControl, например:

<ListBox HorizontalContentAlignment="Stretch".../>

ListBox находится в сетке размером со звездочку из 1 столбца и, таким образом, растягивается, чтобы соответствовать всей доступной ширине в своем контейнере. Когда я изменяю размер контейнера этого ListBox, ListBox тоже изменяет размер, как и ожидалось, так как он растягивается в столбце Grid размера звезды; и то же самое относится и к элементам ListBox ', которые тоже растянуты и в этом случае оказываются экземплярами UserControl с указанным выше макетом (3 столбца в сетке, 3-я звезда).

Проблема в том, что TextBox в 3-м столбце UserControl, используемый в качестве элемента списка, не должен автоматически увеличивать свою ширину при вводе в него какого-либо длинного текста: он должен просто переноситься, увеличивая свою высоту (до максимальной высоты) ; тогда появится вертикальная полоса прокрутки). Другими словами, его максимальная ширина должна определяться доступным пространством, таким как ширина.

Как мне кодировать свой XAML для этого?

1 Ответ

0 голосов
/ 20 декабря 2011

Это должно быть поведение по умолчанию, основанное на опубликованном вами коде.

Попробуйте установить HorizontalAlignment="Stretch"

в вашем TextBox.
...