/ / Jak ustawić obrazy w wierszu pionowo Wyśrodkuj w RichTextBox - wpf, richtextbox, windowsformhost

Jak ustawić obrazy śródliniowe w środku w RichTextBox - wpf, richtextbox, windowsformhost

Pracuję na WPF, wyświetlam dane RichText w RichTextBox dla tych, które podjęły WindowsFormHost, wewnątrz tego biorę WinForm RichTextBox, aby wyświetlić RichTextData, które mają obrazy + tekst.

Ale podczas wyświetlania, że ​​obrazy RichTextData są wyrównane do góry, a tekst do dołu, Zobacz na obrazku poniżej, czerwone kółko to RichTextImage

wprowadź opis obrazu tutaj

chcę wyświetlać obrazy i tekst na środku. Podobnie jak poniżej obrazu, czerwone kółko to RichTextImage, który pojawia się w środku z tekstem.

wprowadź opis obrazu tutaj

Mój kod XAML to:

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

Użyłem również WPF RichTextBox, ale w tym również nie mogę wyrównać tekstu + obrazów w środku

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

Odpowiedzi:

7 dla odpowiedzi № 1

Możesz użyć BaselineAlignment na Run wyśrodkowanie wyrównaj tekst. Oto przykład:

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

EDYTOWAĆ:

Aby zastosować formatowanie do całego pliku RichTextBox spróbuj wywołać tę metodę po RichTextBox jest wypełniony:

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