银光。如何将 InlineUIContainer 内容中的文本与 RichTextBox 中的外部文本对齐

发布于 2024-10-20 17:56:19 字数 1320 浏览 8 评论 0原文

任务:使 InlineUIContainer 的文本内容与外部文本内联。

InlineUIContainer 内容的标准行为是当底部边缘与外部文本内联时。

可以使用 RenderTransform 移动 InlineUIContainer 的位置,但必须为每种字体类型和大小选择 Y 的值 - 这不是一个完美的方法。

<RichTextBox>

    <Paragraph>
        LLL
        <InlineUIContainer>
            <Border Background="LightGoldenrodYellow">
                <TextBlock Text="LLL"/>
            </Border>
        </InlineUIContainer>
        LLL
    </Paragraph>

    <Paragraph>
        LLL
        <InlineUIContainer>
            <Border Background="LightGoldenrodYellow">

                <Border.RenderTransform>
                    <TranslateTransform Y="5" />
                </Border.RenderTransform>

                <TextBlock Text="LLL"/>

            </Border>    
        </InlineUIContainer>
        LLL
    </Paragraph>

</RichTextBox>

Example

无论字体类型和大小如何,如何将 InlineUIContainer 内容中的文本与 RichTextBox 中的外部文本对齐?

在 WPF 中,属性 BaselineAlignment="Center" 工作正常

但 Silverlight 似乎很幸运有这个功能。

The task: Make the text content of the InlineUIContainer to be inline with the outer text.

The standard behaviour of the InlineUIContainer content is when the bottom edge is inline with the outer text.

It is possible to shift the position of InlineUIContainer with RenderTransform, but the value of Y has to be chosen for each font type and size - not a perfect way.

<RichTextBox>

    <Paragraph>
        LLL
        <InlineUIContainer>
            <Border Background="LightGoldenrodYellow">
                <TextBlock Text="LLL"/>
            </Border>
        </InlineUIContainer>
        LLL
    </Paragraph>

    <Paragraph>
        LLL
        <InlineUIContainer>
            <Border Background="LightGoldenrodYellow">

                <Border.RenderTransform>
                    <TranslateTransform Y="5" />
                </Border.RenderTransform>

                <TextBlock Text="LLL"/>

            </Border>    
        </InlineUIContainer>
        LLL
    </Paragraph>

</RichTextBox>

Example

How to align the text in the InlineUIContainer content with the outer text in RichTextBox regardless of font type and size?

In WPF the property BaselineAlignment="Center" works fine.

But Silverlight seems lucking that functionality.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

与风相奔跑 2024-10-27 17:56:19

我罚款了我完美的方法(你可以从中制作一个自定义控件):

首先将你的对象包装到画布中...

<Paragraph>LLL
<InlineUIContainer>
    <Canvas x:Name="c" LayoutUpdated="c_LayoutUpdated">
        <Border Background="LightGoldenrodYellow">
            <TextBlock x:Name="t" FontSize="32"  Text="LLL"/>
        </Border>
    </Canvas>
</InlineUIContainer> LLL
</Paragraph>

并将 LayoutUpdated 事件处理程序添加到画布

    private void c_LayoutUpdated(object sender, EventArgs e)
    {
        c.Width = t.DesiredSize.Width;
        c.Height = (t.DesiredSize.Height / 1.3d);         
    }

按 F5 后,你必须看到奇迹:)

PS:现在文本按照您的意愿进行...无论您使用什么 FontStyle 和 FontSize...

I fined i perfect way around (you can make a custom control from this):

First of all wrap your object into the Canvas...

<Paragraph>LLL
<InlineUIContainer>
    <Canvas x:Name="c" LayoutUpdated="c_LayoutUpdated">
        <Border Background="LightGoldenrodYellow">
            <TextBlock x:Name="t" FontSize="32"  Text="LLL"/>
        </Border>
    </Canvas>
</InlineUIContainer> LLL
</Paragraph>

And add LayoutUpdated event handler to Canvas

    private void c_LayoutUpdated(object sender, EventArgs e)
    {
        c.Width = t.DesiredSize.Width;
        c.Height = (t.DesiredSize.Height / 1.3d);         
    }

After pressing F5 you have to see a miracle :)

PS: Now text do as you wish... no mather what FontStyle and FontSize you use...

述情 2024-10-27 17:56:19

尝试使用 Border.Margin 属性..(尝试将其设置为“0,-5,0,-5”,或其他一些数字)

Try to play with Border.Margin property.. (try to set it to "0,-5,0,-5", or some other numbers)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文