3

タスク: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はその機能を運んでいるようです。

4

2 に答える 2

2

私は完璧な方法で罰金を科しました(これからカスタムコントロールを作成できます):

まず、オブジェクトを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>

そして、LayoutUpdatedイベントハンドラーをCanvasに追加します

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

F5を押した後、奇跡を見る必要があります:)

PS:今、テキストはあなたが望むように動作します...あなたが使用するFontStyleとFontSizeを気にする必要はありません...

于 2011-03-09T20:29:02.623 に答える
0

プロパティで遊んでみてくださいBorder.Margin..(「0、-5,0、-5」、またはその他の数値に設定してみてください)

于 2011-03-09T14:50:42.253 に答える