2013-07-09 5 views
3

Я работаю над WPF, я показываю данные RichText в RichTextBox, которые приняли WindowsFormHost, внутри которого я беру WinForm RichTextBox для отображения RichTextData, у которых есть изображения + текст.Как установить встроенные изображения по вертикали Центр в RichTextBox

Но в то время как дисплей, RichTextData изображения Выровнять сверху и текст Выровнять снизу, См изображений ниже, красный круг RichTextImage

enter image description here

я хочу, чтобы отобразить изображения и текст в центре. Как и ниже, Красный круг - это RichTextImage, который приходит в центр с текстом.

enter image description here

Мой 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" /> 

ответ

7

Вы можете использовать BaselineAlignment на Run, чтобы выровнять текст по центру. Вот пример:

<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> 

EDIT:

Чтобы применить форматирование ко всему RichTextBox попытаться вызвать этот метод после того, как RichTextBox заполняется:

public void CenterText() 
    { 
     var text = new TextRange(rtb.Document.ContentStart, rtb.Document.ContentEnd); 
     text.ApplyPropertyValue(Inline.BaselineAlignmentProperty, BaselineAlignment.Center); 
    } 
+0

Спасибо, я попытался это, но я не вставляю изображение и текст вручную, у меня есть данные RTF с текстом и изображение в моей базе данных, там мне нужно связать этот RichTextBox –

+0

Я отредактировал свой ответ. –

+0

Спасибо, текст сейчас в центре, но формат текста ушел –