Редактировать: я пытаюсь перефразировать мой вопрос, извините, если он не был ясен. В любом случае, спасибо.
Скажем, у меня есть 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 для этого?