任务:使 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>
如何将 InlineUIContainer 内容中的文本与 RichTextBox 中的外部文本对齐,无论字体类型和大小如何?
在 WPF 中,属性 BaselineAlignment="Center"工作正常 https://stackoverflow.com/questions/5225268/wpf-how-to-align-text-in-inlineuicontainer-content-with-outer-text-in-richtextbo.
但 Silverlight 似乎很幸运有这个功能。
我找到了一个完美的方法(您可以从中创建自定义控件):
首先,将您的对象包装到画布中......
<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 事件处理程序添加到 Canvas
private void c_LayoutUpdated(object sender, EventArgs e)
{
c.Width = t.DesiredSize.Width;
c.Height = (t.DesiredSize.Height / 1.3d);
}
按F5后你一定会看到奇迹:)
PS:现在文本可以按照您的意愿行事...无论您使用什么字体样式和字体大小...
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)