Изменение размера текстового блока WPF с помощью WrapWithOverflow - PullRequest
0 голосов
/ 30 января 2020

У меня есть текстовый блок в окне, которое содержится в просмотрщике прокрутки. Для текстового блока я установил перенос текста на «WrapWithOverflow». Кроме того, я привязал свойство ширины текстового блока к фактической ширине средства просмотра прокрутки.

Мое желаемое поведение заключается в том, что я могу изменить размер окна, и текстовый блок должен обернуть содержимое. Окно должно отображать полосы прокрутки только тогда, когда другие элементы управления (например, кнопки в примере xaml обрезаются)

Xaml:

<ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto">
    <DockPanel Margin="5">
        <StackPanel DockPanel.Dock="Top" Orientation="Horizontal">
            <Button Content="First Button" Margin="0,0,10,0"/>
            <Button Content="Second Button"/>
        </StackPanel>
        <DockPanel>
            <TextBlock VerticalAlignment="Center" IsHitTestVisible="False" TextAlignment="Center" TextWrapping="WrapWithOverflow" 
                   Width="{Binding RelativeSource={RelativeSource AncestorType=ScrollViewer}, Path=ActualWidth}" MaxWidth="260">
            Just a small line<LineBreak />
            This is the long line which will wrap during resize</TextBlock>
        </DockPanel>
    </DockPanel>
</ScrollViewer>

Но я вижу полосы прокрутки даже после того, как кнопки обрезаются , Я предполагаю, что это из-за поля в док-панели, которое требуется в моем случае.

enter image description here

1 Ответ

1 голос
/ 30 января 2020

Полагаю, это из-за поля в док-панели

Правильно.

... что требуется в моем случае.

Почему? Вы должны переместить Margin на StackPanel:

<DockPanel>
    <StackPanel DockPanel.Dock="Top" Orientation="Horizontal" Margin="5">
    ...

... или на кнопки:

<DockPanel>
    <StackPanel DockPanel.Dock="Top" Orientation="Horizontal">
        <Button Content="First Button" Margin="5,5,5,5"/>
        <Button Content="Second Button" Margin="5,5,0,5"/>
    </StackPanel>
    ...

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

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