Ограничьте ширину TextBox шириной содержащего его ListView - PullRequest
4 голосов
/ 07 марта 2012

Я работаю над приложением MVVM (хотя примеры здесь не очень MVVM, это просто макет).

У меня есть ListView, который привязывается к коллекции TextItemViewModel экземпляров,представление для них определено в TextItemView.Каждый TextItemView содержит Grid с одним столбцом Auto и столбцом * для заполнения.Столбец заполнения содержит TextBox, где пользователь может ввести текст.

Я хочу, чтобы TextItemView s заполнял горизонтальное пространство ListView (это работает), например:

enter image description here

Однако, когда пользователь вводит длинный текст в поле, я хочу, чтобы он расширялся в Height, но не в Width.На данный момент Width увеличивается, а ListView получает полосу прокрутки, например:

enter image description here

Мой код ListView выглядит следующим образом: (Я взялкод привязки MVVM и установите ItemsSource в коде для этого примера)

<ListView Name="listview"
          SelectionMode="Single"
          Margin="5"
          MinHeight="50"
          HorizontalAlignment="Stretch"
          HorizontalContentAlignment="Stretch" />

И мой код TextItemView выглядит следующим образом:

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="Auto" />
        <ColumnDefinition Width="*" />
        <ColumnDefinition Width="Auto" />
    </Grid.ColumnDefinitions>

    <Button Content="SomeButton"
            HorizontalAlignment="Left"
            VerticalAlignment="Top"                
            Margin="5"
            Grid.Column="0" />

    <TextBox Text="{Binding Path=NoteText}"
             TextWrapping="Wrap"
             AcceptsReturn="True"
             AcceptsTab="True"
             VerticalScrollBarVisibility="Auto"
             HorizontalScrollBarVisibility="Disabled"
             HorizontalAlignment="Stretch"                 
             Margin="5"                 
             Grid.Column="1" />
</Grid>

Может кто-нибудьпосоветуйте мне, как заставить TextItemView заполнить ширину ListView (как это делает), но затем обернуть TextBox и развернуть TextItemView в Height, когда TextBox заполнится?

1 Ответ

10 голосов
/ 07 марта 2012

ОК, я получил это сейчас благодаря WPF - Как остановить автоматическое изменение размеров TextBox?

Хитрость заключается в добавлении следующего к ListView определению:

ScrollViewer.HorizontalScrollBarVisibility="Disabled"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...