none
图片和文本混合显示的方法 RRS feed

  • 问题

  • 版主:

        想要一种可以把图片和文本混合显示的控件或方法,(如同QQ的聊天信息,下图)有没有相关的资料推荐下。

    2012年7月10日 6:22

答案

  • 这个完全通过XAML是实现不了的,你需要在字符串绑定上RichTextBlock之后,也就是显示好之后,你去将里面的内容Replace掉。通过正则或者字符串搜索找到你要替换的特殊字符,然后换上图片。你需要了解RichTextBlock 中文档是怎么组织的,要用到 TextPoiner 类型。 

    我以前有过类似的帖子,不过是WPF的,你可以参考看看,但在Metro下很多变了:http://social.msdn.microsoft.com/Forums/en/wpf/thread/86902bf5-72d4-41de-89ab-3bc20200d44c


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us

    2012年7月10日 10:59
    版主
  • 回家来想了想,可能你还可以看看下面的几个方案:

    • 在构建你的数据源的时候,就进行转换,遍历你的字符串内容,生成不同的TextBlock和Image,然后将生成的内容组合好放入界面的DataTemplate中的一个ContentControl.Content属性中。
    • 创建一个用户控件,里面可以放置RichTextBlock,或者就是TextBlock和Image的组合,然后设计一个自定义的依赖属性,在这个属性被绑定修改的时候,也就是我们在DataTemplate中向这个控件绑定赋上字符串的时候,调用依赖属性的PropertyChangedCallBack 在其中进行字符串转换,生成文本图像结合的内容,展现在用户控件中。

    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us

    2012年7月10日 13:52
    版主

全部回复

  • 人家可能是HTML5实现的,XAML下的方案基本上是 RichTextBlock RichEditBox 来实现


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us

    2012年7月10日 8:51
    版主
  • 如果ListBox绑定到一个集合,集合的Item是String,但是String中的特殊子字符串需展现为图片。把Listbox的数据源绑定到此集合,那数据模板应该怎么来做呢?如果用RichTextBlock 的话,应该怎样定义,以及如何来实现图片的转换。思路很紊乱,不知道这样能不能实现!!!??

    2012年7月10日 9:25
  • 这个完全通过XAML是实现不了的,你需要在字符串绑定上RichTextBlock之后,也就是显示好之后,你去将里面的内容Replace掉。通过正则或者字符串搜索找到你要替换的特殊字符,然后换上图片。你需要了解RichTextBlock 中文档是怎么组织的,要用到 TextPoiner 类型。 

    我以前有过类似的帖子,不过是WPF的,你可以参考看看,但在Metro下很多变了:http://social.msdn.microsoft.com/Forums/en/wpf/thread/86902bf5-72d4-41de-89ab-3bc20200d44c


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us

    2012年7月10日 10:59
    版主
  • 回家来想了想,可能你还可以看看下面的几个方案:

    • 在构建你的数据源的时候,就进行转换,遍历你的字符串内容,生成不同的TextBlock和Image,然后将生成的内容组合好放入界面的DataTemplate中的一个ContentControl.Content属性中。
    • 创建一个用户控件,里面可以放置RichTextBlock,或者就是TextBlock和Image的组合,然后设计一个自定义的依赖属性,在这个属性被绑定修改的时候,也就是我们在DataTemplate中向这个控件绑定赋上字符串的时候,调用依赖属性的PropertyChangedCallBack 在其中进行字符串转换,生成文本图像结合的内容,展现在用户控件中。

    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us

    2012年7月10日 13:52
    版主
  • 感谢版主.....
    2012年7月11日 6:42