С# WPF - проблемы с ScrollViewer + TextBlock
У меня есть TextBlock
внутри ScrollViewer
, который выравнивается с растяжением к его окну. Мне нужно TextBlock
вести себя следующим образом:
- Изменяет размер с помощью окна, без прокрутки.
- При изменении размера ниже определенной ширины
TextBlock
необходимо оставить MinWidth
и полосы прокрутки
-
TextWrapping
или TextTrimming
должны работать надлежащим образом
Как я могу получить эту функциональность?
Я пробовал несколько способов, включая привязки к ActualWidth
и ActualHeight
, но не могу заставить его работать.
Это не может быть так сложно, что мне не хватает?
Вот пример кода для ввода XamlPad (пока еще не установлен MinWidth):
<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto">
<TextBlock TextWrapping="Wrap" Text="Some really long text that should probably wordwrap when you resize the window." />
</ScrollViewer>
</Window>
Ответы
Ответ 1
Это работает:
<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto" Name="Scroller">
<TextBlock HorizontalAlignment="Stretch" VerticalAlignment="Stretch" MinWidth="100" Width="{Binding ElementName=Scroller, Path=ViewportWidth}"
TextWrapping="Wrap" Text="Some really long text that should probably wordwrap when you resize the window." />
</ScrollViewer>
</Window>
Ответ 2
Без подробностей лучше всего я могу обеспечить стандартный способ сделать это. В основном, разместите свой элемент (который имеет минимальный размер) в средстве просмотра прокрутки; когда scrollviewer изменяется настолько мало, что элемент не может полностью вписаться в него, он автоматически отображает полосы прокрутки. Пример:
<ScrollViewer>
<Button MinWidth="100" MinHeight="50"/>
</ScrollViewer>
Ответ 3
Если у вас более сложный макет и он не может привязываться к ScrollViewer
, то в ответе fooobar.com/info/281937/... может помочь.