wpf textwrapping - PullRequest
       27

wpf textwrapping

9 голосов
/ 19 мая 2009

Мне нужна помощь. Не знаю, возможно ли это. Я хочу иметь следующее:

    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="Auto"/>
            <ColumnDefinition Width="*"/>
        </Grid.ColumnDefinitions>
        <TextBox TextWrapping="Wrap" MinLines ="5"/>
    </Grid>

, который представляет собой текстовое поле, обертывающее столбец сетки шириной *. Я хочу, чтобы текстовое поле занимало всю доступную ширину (отсюда *), но когда пользователь добавляет текст, я хочу, чтобы оно переносилось, когда оно доходило до конца строки (с доступным пространством).

В настоящее время приведенное выше даст текстовое поле со всей шириной, но при вводе текста ширина текстового поля только увеличивается с текстом.

Я знаю, что могу установить MaxWidth = ?, но смысл столбца * в том, что я не знаю, каков размер столбца.

Я хотел бы сказать текстовому полю "не расти, какой бы wpf не дал, возьми его и не увеличивай еще один пиксель выше этого".

Я думаю, что то, что я хочу, невозможно, потому что wpf спрашивает, какой элемент управления должен быть большим, и когда пользователь добавляет больше текста, выходящего за границы, он любезно запрашивает больше места и уходит, расширяя свою ширину до бесконечности.

Ответы [ 3 ]

9 голосов
/ 19 мая 2009

Попробуйте связать свойство MaxWidth вашего TextBox со свойством ActualWidth вашего помеченного столбца (для этого вам нужно будет указать свой столбец). Я почти уверен, что делал что-то подобное в прошлом.

Что-то вроде:

MaxWidth={Binding ElementName=MyColumn, Path=ActualWidth}

Удачи!

0 голосов
/ 20 мая 2009

В дополнение к тому, что RandomEngy говорит о Grid.Column="1", вам также может потребоваться установить некоторые свойства выравнивания для самого Grid, особенно если он установлен внутри другого контейнера с другим дочерним Stretch поведением (например, StackPanel ).

0 голосов
/ 19 мая 2009

Кажется, работает правильно для меня, когда я устанавливаю Grid.Column="1" в TextBox.

...