シルバーライト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>
TextDisplay コントロールの XAML は次のようになります。
<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" を設定すると、右にスクロールして表示されます。強制的にラップするにはどうすればよいですか?