如何修改ListViewItem模板中的RichTextBox使其文本横向显示?
解决ListViewItem中RichTextBox文本纵向显示的问题
你的RichTextBox文本呈现纵向显示,核心原因是未明确指定FlowDocument的排版方向,或其内容容器宽度未适配控件。以下是修正后的完整Style代码:
<Style TargetType="ListViewItem" x:Key="InformationListItemTheme"> <Setter Property="Template"> <Setter.Value> <ControlTemplate> <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="100"/> <ColumnDefinition Width="*"/> <ColumnDefinition Width="175"/> </Grid.ColumnDefinitions> <TextBlock Grid.Column="0"/> <!-- 修正后的RichTextBox --> <RichTextBox Grid.Column="1" Height="275"> <RichTextBox.Document> <FlowDocument PageWidth="{Binding RelativeSource={RelativeSource AncestorType=RichTextBox}, Path=ActualWidth}" FlowDirection="LeftToRight"> <Paragraph> <!-- 在此处添加或绑定文本内容 --> </Paragraph> </FlowDocument> </RichTextBox.Document> </RichTextBox> <Grid Grid.Column="2"> <Grid.ColumnDefinitions> <ColumnDefinition/> <ColumnDefinition/> </Grid.ColumnDefinitions> <Grid.RowDefinitions> <RowDefinition/> <RowDefinition/> <RowDefinition/> <RowDefinition/> <RowDefinition/> </Grid.RowDefinitions> <TextBlock Grid.Column="0" Grid.Row="0" Text="JA"/> <TextBlock Grid.Column="0" Grid.Row="1" Text="SCH"/> <TextBlock Grid.Column="0" Grid.Row="2" Text="ELT"/> <TextBlock Grid.Column="0" Grid.Row="3" Text="KIN"/> <TextBlock Grid.Column="0" Grid.Row="4" Text="SON"/> <TextBox Grid.Column="1" Grid.Row="0" Text="{Binding JA}"/> <TextBox Grid.Column="1" Grid.Row="1" Text="{Binding SCH}"/> <TextBox Grid.Column="1" Grid.Row="2" Text="{Binding ELT}"/> <TextBox Grid.Column="1" Grid.Row="3" Text="{Binding KIN}"/> <TextBox Grid.Column="1" Grid.Row="4" Text="{Binding SON}"/> </Grid> </Grid> </ControlTemplate> </Setter.Value> </Setter> </Style>
关键修改说明:
- 为RichTextBox显式添加
FlowDocument节点,设置FlowDirection="LeftToRight",强制文本采用横向排版逻辑 - 将
FlowDocument的PageWidth绑定到RichTextBox的ActualWidth,让内容容器宽度与控件自身宽度匹配,文本会自动横向换行,而非纵向堆叠
内容的提问来源于stack exchange,提问作者stutski
相关产品推荐
相关产品推荐

