3

我正在研究 WPF,我在 RichTextBox 中显示 RichText 数据,因为它已经采用了 WindowsFormHost,在其中我正在采用 WinForm RichTextBox 来显示具有图像 + 文本的 RichTextData。

但是在显示 RichTextData 图像与顶部对齐且文本与底部对齐时,请参见下图,红色圆圈为 RichTextImage

在此处输入图像描述

我想在中心显示图像和文本。像下图一样,红色圆圈是 RichTextImage,它与文本居中。

在此处输入图像描述

我的 XAML 代码是:

<Window x:Class="WPFRichTextBox.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:wf="clr-namespace:System.Windows.Forms;assembly=System.Windows.Forms"
    Title="MainWindow" Height="600" Width="800" Background="LightBlue" xmlns:my="clr-namespace:WPFRichTextBox">

<Grid Loaded="Grid_Loaded">

    <WindowsFormsHost Margin="0,424,0,22">

        <wf:RichTextBox   Text="RichTextBox" x:Name="richTbTest1" BorderStyle="None" Enabled="True" ForeColor="Black" Width="550" Multiline="True" />


   </WindowsFormsHost>

  </Grid>
</Window>

我也使用过 WPF RichTextBox,但我也无法在中心对齐文本+图像

     <RichTextBox VerticalContentAlignment="Stretch" Height="158" HorizontalAlignment="Left" Margin="10,247,0,0" Name="richTextBox1" VerticalAlignment="Top" Width="754" />
4

2 回答 2

8

您可以使用BaselineAlignmenton aRun使文本居中对齐。这是一个例子:

<RichTextBox>
    <FlowDocument>
        <Paragraph>
            <Run Text="Some text" BaselineAlignment="Center"/>
            <Image Height="100" Width="100" Source="Images\Desert.jpg"/>
            <Run Text="Some more text" BaselineAlignment="Center"/>
        </Paragraph>
        <Paragraph/>
        <Paragraph>
            <Run Text="Paragraph 2" BaselineAlignment="Center"/>
            <Image Height="100" Width="100" Source="Images\Desert.jpg"/>
            <Run Text="More text" BaselineAlignment="Center"/>
        </Paragraph>
    </FlowDocument>
</RichTextBox>

编辑:

要将格式应用于整个尝试在填充RichTextBox后调用此方法:RichTextBox

    public void CenterText()
    {
        var text = new TextRange(rtb.Document.ContentStart, rtb.Document.ContentEnd);
        text.ApplyPropertyValue(Inline.BaselineAlignmentProperty, BaselineAlignment.Center);
    }
于 2013-07-12T10:18:11.330 回答
0

我能够Span使用BaseAlignment属性设置为"Center".

<RichTextBox>
  <FlowDocument>

      <Paragraph>
          <Span BaseAlignment="Center">
             Center My Image
             <Image ... />
          </Span>
      </Paragraph>

  </FlowDocument>
</RichTextBox>
于 2021-07-14T16:33:28.377 回答