Запретить расширение TextBox в ListViewItem - PullRequest
0 голосов
/ 27 мая 2020

У меня есть TextBox внутри StackView внутри ListViewItem, и я хочу, чтобы он обертывался, а не расширялся, когда содержимое становится шире доступного пространства.

LVI определен по этому шаблону:

    <DataTemplate DataType="{x:Type custom:FreeCommentQuestion}">
        <StackPanel Margin="5">
            <Label Content="{Binding Text}"/>
            <TextBox AcceptsReturn="True" TextWrapping="Wrap" Text="{Binding Comment}"/>
        </StackPanel>
    </DataTemplate>

И ListView находится внутри ScrollViewer в TabItem:

    <TabItem Header="Testing" >
        <ScrollViewer>
            <ListView ItemsSource="{Binding Questions}" HorizontalContentAlignment="Stretch"/>
        </ScrollViewer>
    </TabItem>

Все выглядит нормально:

Textbox1

Пока я не наберу слишком много:

TextBox2

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

ListView также не сжимается, когда размер окна был увеличен, а затем снова уменьшен.

Как мне это исправить?

1 Ответ

1 голос
/ 27 мая 2020

Вам не нужна программа просмотра прокрутки, поскольку шаблон ListView по умолчанию содержит ее. Поэтому вы можете удалить внешнюю прокрутку и установить ScrollViewer.HorizontalScrollBarVisibility="Disabled" на ListView

        <ListView ScrollViewer.HorizontalScrollBarVisibility="Disabled" ItemsSource="{Binding Questions}" HorizontalContentAlignment="Stretch">
            <ListView.ItemTemplate>
                <DataTemplate>
                    <TextBox AcceptsReturn="True" TextWrapping="Wrap"/>
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>

. В качестве альтернативы используйте ItemsControl и сохраните внешний ScrollViewer

    <ScrollViewer HorizontalScrollBarVisibility="Disabled">
        <ItemsControl ItemsSource="{Binding Questions}" HorizontalContentAlignment="Stretch">
            <ItemsControl.ItemTemplate>
                <DataTemplate>
                    <TextBox AcceptsReturn="True" TextWrapping="Wrap"/>
                </DataTemplate>
            </ItemsControl.ItemTemplate>
        </ItemsControl>
    </ScrollViewer>

ItemsControl намного больше базового c, чем ListView, но, похоже, он больше подходит для вашего сценария.

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