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> 并且看起来很好并且可以正确垂直滚动。但是,当一个项目不能水平放入 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 回答
0

ListView您可以通过使用as来引入滚动条

<Section Name="Gallery">
                <Paragraph>
                    <ListView ItemsSource="{Binding GalleryCards}"
                              BorderBrush="Transparent"
                              HorizontalAlignment="Center"
                              ScrollViewer.HorizontalScrollBarVisibility="Disabled"
                              Padding="10"
                              Width="{Binding ElementName=Viewer, Path=RenderSize.Width, Converter={StaticResource DocumentSizeConverter}, ConverterParameter=80, UpdateSourceTrigger=PropertyChanged}">
                        <ListView.ItemTemplate>
                            <DataTemplate>
                                <ContentControl s:View.Model="{Binding .}"/>
                            </DataTemplate>
                        </ListView.ItemTemplate>
                        <ListView.ItemsPanel>
                            <ItemsPanelTemplate>
                                <WrapPanel HorizontalAlignment="Center" />
                            </ItemsPanelTemplate>
                        </ListView.ItemsPanel>
                    </ListView>
                </Paragraph>
            </Section>
于 2020-07-24T10:11:12.773 回答