Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Silverlight。如何将InlineUIContainer内容中的文本与RichTextBox中的外部文本对齐_Silverlight_Richtextbox_Inlineuicontainer - Fatal编程技术网

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

Silverlight。如何将InlineUIContainer内容中的文本与RichTextBox中的外部文本对齐,silverlight,richtextbox,inlineuicontainer,Silverlight,Richtextbox,Inlineuicontainer,任务:使InlineUIContainer的文本内容与外部文本内联 InlineUIContainer内容的标准行为是当底边与外部文本内联时 使用RenderTransform可以改变InlineUIContainer的位置,但是必须为每种字体类型和大小选择Y值,这不是一种完美的方法 <RichTextBox> <Paragraph> LLL <InlineUIContainer> <Bo

任务:使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”


但是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);         
    }