/ / Inline-Bilder in RichTextBox vertikal zentrieren - wpf, richtextbox, windowsformhost

Wie man eingebettete Bilder in RichTextBox vertikal zentrieren - wpf, richtextbox, windowsformhost

Ich arbeite an WPF, ich zeige RichText-Daten in RichTextBox für das WindowsFormHost genommen haben, innerhalb dessen ich WinForm RichTextBox nehme, um RichTextData anzuzeigen, die Bilder + Text haben.

Während jedoch angezeigt wird, dass RichTextData-Bilder nach oben und Text nach unten ausgerichtet sind, Siehe Bild unten, roter Kreis ist RichTextImage

Bildbeschreibung hier eingeben

Ich möchte Bilder und Text in der Mitte anzeigen. Wie unter Bild ist der rote Kreis RichTextImage, der in der Mitte mit Text kommt.

Bildbeschreibung hier eingeben

Mein XAML-Code lautet:

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

Ich habe auch WPF RichTextBox verwendet, aber darin kann ich auch nicht Text + Bilder in der Mitte ausrichten

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

Antworten:

7 für die Antwort № 1

Sie können verwenden BaselineAlignment auf einen Run zum zentrieren den text ausrichten. Hier ist ein Beispiel:

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

BEARBEITEN:

Die Formatierung auf das gesamte anwenden RichTextBox versuchen Sie, diese Methode nach dem aufzurufen RichTextBox ist besiedelt:

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