2

4 行 x 2 列のグリッド内に次の XAML があります。Grid.ColumnDefinitions では、両方の ColumnDefinition Width が * に設定されています。

    <FlowDocumentScrollViewer Style="{StaticResource myFlowDoc}"
                              Grid.Row="4"
                              Grid.Column="1"  >
        <FlowDocument >
            <Paragraph  LineHeight="12" >
                <ItemsControl ItemsSource="{Binding ReceivedData, Mode=OneWay}" />
                <TextBlock TextWrapping="Wrap" Text="{Binding /, Mode=OneWay}" />
            </Paragraph>
        </FlowDocument>
    </FlowDocumentScrollViewer>

データは ObservaleCollection<string> から取得され、見栄えがよく、垂直方向に正しくスクロールします。ただし、1 つの項目が TextBlock に水平方向に収まらない場合、テキスト ブロックは折り返されず、FlowDocumentScrollViewer はスクロール バーを表示しません。テキストを表示する唯一の方法は、ウィンドウを水平方向に拡大することです。私が間違っていることと、TextWrapping 設定が尊重されない理由を誰かが知っていますか?

ここで重要な場合は、スタイル myFlowDoc です

        <Style x:Key="myFlowDoc">
        <Setter Property="Control.Padding"
                Value="0" />
        <Setter Property="FlowDocumentScrollViewer.IsToolBarVisible"
                Value="True" />
        <Setter Property="Control.MinHeight"
                Value="150" />
        <Setter Property="Control.BorderBrush"
                Value="SteelBlue" />
        <Setter Property="Control.BorderThickness"
                Value="2" />
        <Setter Property="Control.VerticalAlignment"
                Value="Stretch" />
    </Style>

[編集 1] 以下は、ラップする必要があるエラー メッセージを含む全画面です。この画像の下には、メッセージ全体を表示できるようにウィンドウを広げてメッセージの詳細領域のみを表示したものがあります。また、ユーザー コントロールの xaml 全体をhttps://gist.github.com/1036178#に配置しました。

[編集 2.1] @Navid の提案により、間接的に答えが導き出されました。「/」を削除し、データ テンプレートでラップするとうまくいくようです。新しい XAML は次のとおりです。

<DataTemplate x:Key="StringCollection">
   <TextBlock TextWrapping="Wrap" Text="{Binding}" TextAlignment="Left"/>
</DataTemplate>
<!--... now down in the ItemsControl-->
<ItemsControl ItemsSource="{Binding ReceivedData, Mode=OneWay}"
          ItemTemplate="{StaticResource StringCollection}" />

テキストが収まらず折り返されていないウィンドウのスクリーンショット ウィンドウが広くなると、メッセージ全体を見ることができます

4

2 に答える 2

2

これを使って

<ItemsControl ItemsSource="{Binding ReceivedData, Mode=OneWay}">     
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <TextBlock TextWrapping="Wrap" Text="{Binding /, Mode=OneWay}" />
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>
于 2011-06-20T18:59:38.803 に答える