8

是否可以在 XAML 中为 CSS 中的图像执行类似 ffloat:left 的操作。我需要创建这样的东西:

在此处输入图像描述

具有可变的图像尺寸和文本长度。

编辑:在我的情况下,图像周围的文本扭曲不是静态的,它是在 C# 代码中创建的,返回一个 TextBlock 元素列表(带有运行)

4

3 回答 3

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 回答
3

该解决方案似乎使用了本演示文稿中描述的 RichTextBlockOverflow 和 OverflowContentTarget:http: //video.ch9.ms/build/2011/slides/APP-914T_Street.pptx

于 2012-05-04T13:38:45.623 回答
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 Elements,两者都可以是 Paragraph 对象的子级。所以简单地命名你的名字Paragraph

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

然后在 C# 中,将你生成TextBlock的 s 或Runs 添加到InlinestextPara 的属性中,即

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