RichTextBox в Xaml + InlineUIContainer - PullRequest
0 голосов
/ 04 апреля 2019

Учитывая следующий Xaml, почему RichTextBox на 100,150 имеет 123 смещения?Вы заметите, что в том же RichTextBox, если я вставляю текст непосредственно как TextBlock, он остается выровненным по обычным циклам.Если я помещаю его в ContentPresenter, он становится все дурацким.

Я пытался поиграть с отступами и полями, но не могу выровнять его.

<Window x:Class="WpfApp1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WpfApp1"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800">
    <Window.Resources>
        <DataTemplate x:Key="Test">
            <TextBlock Text="{Binding}" Foreground="Red" />
        </DataTemplate>

    </Window.Resources>
    <Grid>
        <TextBlock Text="Abc;123" Margin="100,100,0,0" />
        <RichTextBox>
            <RichTextBox.Document>
                <FlowDocument>
                    <Paragraph>
                        <Run>Abc</Run>
                        <Run>;</Run>
                        <Run>123</Run>
                    </Paragraph>
                </FlowDocument>
            </RichTextBox.Document>
        </RichTextBox>
        <ContentPresenter Content="Abc;123" Margin="100,120,0,0" ContentTemplate="{StaticResource Test}" />

        <RichTextBox Margin="100,150,0,0">
            <RichTextBox.Document>
                <FlowDocument>
                    <Paragraph>
                        <InlineUIContainer>
                            <TextBlock Text="Abc" />
                        </InlineUIContainer>
                        <Run>;</Run>
                        <InlineUIContainer>
                            <ContentPresenter Content="123" />
                        </InlineUIContainer>
                    </Paragraph>
                </FlowDocument>
            </RichTextBox.Document>
        </RichTextBox>

    </Grid>
</Window>

1 Ответ

1 голос
/ 04 апреля 2019

Вам необходимо установить InlineUIContainer.BaselineAlignment в «Центр» для ContentPresenter.

<InlineUIContainer BaselineAlignment="Center">
    <ContentPresenter Content="123" />
</InlineUIContainer>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...