Silverlight。如何将InlineUIContainer内容中的文本与RichTextBox中的外部文本对齐
任务:使InlineUIContainer的文本内容与外部文本内联 InlineUIContainer内容的标准行为是当底边与外部文本内联时 使用RenderTransform可以改变InlineUIContainer的位置,但是必须为每种字体类型和大小选择Y值,这不是一种完美的方法Silverlight。如何将InlineUIContainer内容中的文本与RichTextBox中的外部文本对齐,silverlight,richtextbox,inlineuicontainer,Silverlight,Richtextbox,Inlineuicontainer,任务:使InlineUIContainer的文本内容与外部文本内联 InlineUIContainer内容的标准行为是当底边与外部文本内联时 使用RenderTransform可以改变InlineUIContainer的位置,但是必须为每种字体类型和大小选择Y值,这不是一种完美的方法 <RichTextBox> <Paragraph> LLL <InlineUIContainer> <Bo
<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”
但是Silverlight似乎很幸运地实现了这一功能。尝试使用
Border.Margin
属性。。(尝试将其设置为“0,-5,0,-5”或其他一些数字)我找到了一个完美的方法(您可以从中创建自定义控件):
首先,将对象包装到画布中
<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>
按F5键后,您将看到一个奇迹:)
附言:现在你想怎么做就怎么做。。。不知道您使用什么样的字体样式和字体大小…通过将边框边距属性设置为“0,-5,0,-5”,您的意思是“我不希望“边框”从顶部填充5个像素,从底部填充5个像素,请将此位置留给其他控件,但仍然绘制“边框”。“边距属性的工作方式与RenderTransform相同-还有一种方法可以这样做。如果字体类型或大小发生变化,则需要不同的边距值。在这里使用converter也不是一个解决方案-将字体类型和大小转换为负边距是一个什么样的功能?感谢您的时间和坚持!你真是个巫师!它就像我梦见的一样。你怎么找到的?什么是魔法系数“1.3d”?它来自哪里?1.3d可能与72 dpi和96 dpi之间的关系有关。谢谢。这和我想做的非常接近。在我的例子中,让画布的高度为.75,并将文本块中的字体减少到RichTextBox中周围文本的.75,这给了我想要的效果,即在文本中嵌入标签。
private void c_LayoutUpdated(object sender, EventArgs e)
{
c.Width = t.DesiredSize.Width;
c.Height = (t.DesiredSize.Height / 1.3d);
}