Xaml + InlineUIContainer中的RichTextBox

时间:2019-04-03 22:58:49

标签: c# wpf

给出以下Xaml,为什么在100150处的RichTextBox的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 个答案:

答案 0 :(得分:1)

您需要将InlineUIContainer.BaselineAlignment的{​​{1}}设置为“居中”。

ContentPresenter