8

CSSの画像に対してfloat:leftのようなことをXAMLで行うことは可能ですか? 次のようなものを作成する必要があります。

ここに画像の説明を入力

画像のサイズとテキストの長さが可変です。

編集:私の場合、画像の周りのテキストワープは静的ではありません.TextBlock要素のリストを返すC#コードで作成されています(実行あり)

4

3 に答える 3

3

ソリューションは、このプレゼンテーションで説明されている RichTextBlockOverflow と OverflowContentTarget を使用しているようです: http://video.ch9.ms/build/2011/slides/APP-914T_Street.pptx

于 2012-05-04T13:38:45.623 に答える
3

Silverlight 4 では、以下を使用してこれを実現しますRichTextBox

 <RichTextBox TextWrapping="Wrap"  IsReadOnly="False">  
   <Paragraph>  
        More text here .. 
        <InlineUIContainer>  
            <Image Source="abc.jpg"/>  
        </InlineUIContainer>   
        more and more text here;  
        <LineBreak />  
    </Paragraph>  
</RichTextBox> 

Win8 Metro にはRichTextBoxがあり、InlineUIContainerもあるように見えるので、上記のようなものが機能するはずです!

于 2012-05-04T08:54:48.750 に答える
1

この質問は、あなたが望むものに似たものを求めているようです。ここでの答えは、あなたが望むものへの解決策を証明するはずです.

答えの要約は、FlowDocument次の例のように使用します。

<FlowDocument>
    <Paragraph>
        <Floater HorizontalAlignment="Left">
            <BlockUIContainer>
                <Image Source="/FlowDocumentTest;component/dog.png" Width="100" /> 
            </BlockUIContainer>
        </Floater>
        Here is where the text goes to wrap around the image.
    </Paragraph>
</FlowDocument>

アップデート

あなたの質問が述べているように、現在、いくつかの C# コードを使用して TextBlock/Run 要素を生成しています。どちらも Paragraph オブジェクトの子にすることができます。だから、あなたのParagraph好きな名前を付けてください:

<FlowDocument>
    <Paragraph x:Name="textPara">
        <Floater HorizontalAlignment="Left">
            <BlockUIContainer>
                <Image Source="/FlowDocumentTest;component/dog.png" Width="100" /> 
            </BlockUIContainer>
        </Floater>
    </Paragraph>
</FlowDocument>

次に、C# で、生成されたTextBlocks またはRuns をInlinestextPara のプロパティに追加します。

var runToInsert = new Run("Some text to display");
textPara.Inlines.InsertAfter(textPara.Inlines.FirstInline, runToInsert);
于 2012-05-04T08:52:28.700 に答える