В Silverlight 2.0. У меня есть контент, который я хочу прокрутить по вертикали и обернуть по горизонтали. В элементах управления у меня есть док-панель. Последний дочерний элемент DockPanel, который его заполняет, - это ScrollViewer.
<UserControl x:Class = "MyProject.MyControl"
xmlns = "http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x = "http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:WinControls = "clr-namespace:Microsoft.Windows.Controls;
assembly=Microsoft.Windows.Controls"
Width = "400" Height = "300">
<WinControls:DockPanel LastChildFill = "True">
...
<ScrollViewer x:Name = "MessageScroll" HorizontalScrollBarVisibility = "Hidden"
VerticalScrollBarVisibility = "Auto" BorderThickness = "0" >
<Controls:TextDisplay x:Name = "TextDisplay"></Controls:TextDisplay>
</ScrollViewer>
XAML элемента управления TextDisplay выглядит так:
<UserControl x:Class = "MyProject.TextDisplay"
xmlns = "http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x = "http://schemas.microsoft.com/winfx/2006/xaml">
<TextBlock x:Name = "TextDisplayText" TextWrapping = "Wrap">
</TextBlock>
</UserControl>
Что я хочу сделать: TextDisplay должен занимать основную область элемента управления, с вертикальной полосой прокрутки, если высота не подходит. Сообщения следует переносить, когда они становятся слишком длинными по горизонтали.
Прокрутка работает, но теперь сообщения не переносятся по правому краю. они просто отрезаны. Он не ограничивает ширину, просто скрывает HorizontalScrollBar. Если я установлю HorizontalScrollBarVisibility = "Auto", я вижу, как они прокручиваются вправо. Как заставить его завернуться?





Попробуйте установить для HorizontalScrollBarVisibility ScrollViewer значение Disabled (или не указывайте значение, поскольку Disabled является значением по умолчанию), тогда TextDisplay будет правильно переноситься и горизонтальная полоса прокрутки не будет отображаться.