1

シルバーライト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 はコントロールのメイン領域を占有し、高さが合わない場合は垂直スクロールバーを表示する必要があります。メッセージが横方向に長くなりすぎると折り返す必要があります。

スクロールは機能しますが、メッセージが右端で折り返されません。彼らはただ断ち切りました。幅を制限するのではなく、Horizo​​ntalScrollBar を非表示にするだけです。Horizo​​ntalScrollBarVisibility="Auto" を設定すると、右にスクロールして表示されます。強制的にラップするにはどうすればよいですか?

4

1 に答える 1

4

ScrollViewer の Horizo​​ntalScrollBarVisibility を Disabled に設定してみてください (または Disabled がデフォルトであるため、値を指定しないでください)、TextDisplay は正しくラップされ、水平スクロール バーは表示されません。

于 2008-12-01T13:03:06.150 に答える