如何在XAML(Windows 8 Metro)中设置图片的“浮动”效果

8
在 XAML 中是否可能像 CSS 中的 ffloat:left 一样设置图像位置。我需要创建以下内容:具有可变图像尺寸和文本长度的内容。
编辑:在我的情况下,环绕图像的文本不是静态的,而是在 C# 代码中创建的,该代码返回 TextBlock 元素列表(带有 Runs)。
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有一个富文本框,还有一个InlineUIContainer,因此上述内容应该可以正常工作!


你如何在C#中创建这个?我有一个TextBlock列表(带有Runs),所以我猜我可以将第一个转换为这个,然后就可以了。 - Igor Kulman

3

非常准确!还请参阅此链接 - wpfwannabe

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命名如下:

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

然后在C#中,将生成的TextBlockRun添加到textPara的Inlines属性中,即:
var runToInsert = new Run("Some text to display");
textPara.Inlines.InsertAfter(textPara.Inlines.FirstInline, runToInsert);

我编辑了这个问题。在我的情况下,文本不是静态的,而是一堆文本框。我将它们插入到StackPanel中,但如何将它们插入到其中? - Igor Kulman
@IgorKulman 我犯了一个错误,我误读了MSDN文档,将会用更好的例子进行更新。 - Lukazoid
顺便提一下,FlowDocument 必须放置在 FlowDocumentPageViewer 中,该控件会创建 UI 元素(如分页),但在我的情况下不需要。 - Igor Kulman
我已经更新了我的答案,并使用FlowDocumentScrollViewer,如果需要的话可以禁用滚动条和其他功能 :) - Lukazoid
设置宽度有所帮助,但我无法找到如何禁用FlowDocumentScrollViewer的所有不需要的功能。 - Igor Kulman
显示剩余6条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接