首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何让TextBlock在FlowDocumentScrollViewer中换行或滚动

如何让TextBlock在FlowDocumentScrollViewer中换行或滚动
EN

Stack Overflow用户
提问于 2011-06-19 12:55:47
回答 2查看 1K关注 0票数 2

我在一个4行x 2列的网格中有以下XAML。Grid.ColumnDefinitions的两个ColumnDefinition宽度都设置为*。

代码语言:javascript
复制
    <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,看起来很好,可以正确地垂直滚动。但是,当某个项目不能水平放置在TextBlock中时,文本块将不会换行,FlowDocumentScrollViewer也不会显示滚动条。查看文本的唯一方法是水平扩展窗口。有人知道我做错了什么吗?为什么TextWrapping设置不受欢迎?

如果重要的话,这里使用的是myFlowDoc样式

代码语言:javascript
复制
        <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

代码语言:javascript
复制
<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}" />

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-06-21 02:59:39

使用这个

代码语言:javascript
复制
<ItemsControl ItemsSource="{Binding ReceivedData, Mode=OneWay}">     
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <TextBlock TextWrapping="Wrap" Text="{Binding /, Mode=OneWay}" />
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>
票数 2
EN

Stack Overflow用户

发布于 2020-07-24 18:11:13

您可以通过使用ListView来引入滚动条,如下所示

代码语言:javascript
复制
<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>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6400636

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档