У меня есть TextBlock
в WPF. Я пишу много строк, намного превышающих его вертикальную высоту. Я ожидал, что вертикальная полоса прокрутки появится автоматически, когда это произойдет, но это не так. Я попытался найти свойство полосы прокрутки на панели свойств, но не смог найти.
Как сделать так, чтобы вертикальная полоса прокрутки создавалась автоматически, TextBlock
когда ее содержимое превышает ее высоту?
Пояснение: я бы предпочел сделать это от дизайнера, а не напрямую писать в XAML.
TextBlock
дважды иTextBox
один раз.Ответы:
Оберните это в просмотрщик прокрутки:
ПРИМЕЧАНИЕ. Этот ответ применяется к
TextBlock
(текстовому элементу только для чтения), как было задано в исходном вопросе.Если вы хотите показать полосы прокрутки в
TextBox
(редактируемый текстовый элемент), тогда используйтеScrollViewer
прикрепленные свойства:Допустимые значения для этих двух свойств являются
Disabled
,Auto
,Hidden
иVisible
.источник
TextBlock
не в этомTextBox
.можете использовать следующее сейчас:
источник
TextBlock
неTextBox
(как в названии и вводной линии), но во втором пункте упоминаетсяTextBox
. Чтобы быть ясным, этот ответ, безусловно, лучший подход для текстовых блоков , и мой лучший из всех, что я знаю для текстовых блоков :)Что-то лучше было бы:
Это гарантирует, что текст в вашем текстовом блоке не переполняется и не перекрывает элементы ниже текстового блока, как это может быть в случае, если вы не используете сетку. Это случилось со мной, когда я попробовал другие решения, хотя текстовый блок уже был в сетке с другими элементами. Имейте в виду, что ширина текстового блока должна быть Авто, и вы должны указать желаемое значение в элементе Grid. Я сделал это в своем коде, и это прекрасно работает. НТН.
источник
Это способ использовать прокручиваемый TextBox в XAML и использовать его как текстовую область.
источник
TextBlock
нетTextBox
.Этот ответ описывает решение с использованием MVVM.
Это решение отлично подходит, если вы хотите добавить окно регистрации в окно, которое автоматически прокручивается вниз при каждом добавлении нового сообщения регистрации.
После добавления этих прикрепленных свойств их можно повторно использовать где угодно, что делает их очень модульным и многократно используемым программным обеспечением.
Добавьте этот XAML:
Добавьте это прикрепленное свойство:
И это прикрепленное свойство (очистить поле):
Затем, если вы используете инфраструктуру внедрения зависимостей, такую как MEF, вы можете поместить весь специфичный для журналирования код в его собственную ViewModel:
Вот как это работает:
источник
Я делаю это по-другому, помещая MaxHeight в ScrollViewer.
Просто настройте MaxHeight, чтобы показать больше или меньше строк текста. Легко.
источник
Ты можешь использовать
Это свойство wpf. Чтобы получить больше информации
http://wpfbugs.blogspot.in/2014/02/wpf-layout-controls-scrollviewer.html
источник
Я пытался заставить эти предложения работать для текстового блока, но не смог заставить его работать. Я даже пытался заставить его работать у дизайнера. (Посмотрите в Layout и разверните список, нажав стрелку вниз «V» внизу). Я попытался установить для scrollviewer значение Visible, а затем Auto , но оно все равно не работает.
В конце концов я сдался и изменил на
TextBlock
aTextBox
с набором атрибутов Readonly , и это сработало как шарм.источник
Не знаю , если кто - то имеет эту проблему , но обертывание мою
TextBlock
вScrollViewer
somewhow перепутались мой UI - как простое решение , я понял, что заменаTextBlock
наTextBox
как этотсоздает,
TextBox
который выглядит и ведет себя какTextBlock
с полосой прокрутки (и вы можете сделать все это в дизайнере).источник
Это простое решение этого вопроса. Вертикальная прокрутка будет активирована только при переполнении текста.
<TextBox Text="Try typing some text here " ScrollViewer.VerticalScrollBarVisibility="Auto" TextWrapping="WrapWithOverflow" />
источник