WPF取代smiley';s在带有笑脸图标的消息中

WPF取代smiley';s在带有笑脸图标的消息中,wpf,xaml,mvvm,Wpf,Xaml,Mvvm,我正在用WPF(使用MVVM)编写一个聊天应用程序,当用户向聊天流中提交消息时,我想用实际的笑脸图标替换任何笑脸表达式,如:-):-/:-D等 我已经编写了一个转换器来对消息进行线性搜索并识别笑脸。我的问题是,一旦我识别了一个笑脸表情,我如何用实际图标替换包含笑脸的文本块 如果你觉得有更好或更有效的方法,我很想知道 public object Convert(object value, Type targetType, object parameter, CultureInfo culture)

我正在用WPF(使用MVVM)编写一个聊天应用程序,当用户向聊天流中提交消息时,我想用实际的笑脸图标替换任何笑脸表达式,如:-):-/:-D等

我已经编写了一个转换器来对消息进行线性搜索并识别笑脸。我的问题是,一旦我识别了一个笑脸表情,我如何用实际图标替换包含笑脸的文本块

如果你觉得有更好或更有效的方法,我很想知道

public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        // The message passed in to the converter by calling XAML code
        var message = System.Convert.ToString(value);

        // Perform a linear search on the message 
        for (int i = 0; i < message.Length - 1; i++)
        {
            var c = message[i];

            // Look for the character ':'
            if (c == ':'
                // Ensure that it has 2 more characters after it
                && i + 2 <= message.Length - 1 &&
                // If it's the last character then that's fine
                ((i + 2 == message.Length - 1) ||
                // Or else it should be followed by an empty space
                (i + 3 <= message.Length - 1 && message[i + 3] == ' ')))
            {
                var expression = message.Substring(i, 3);

                message = message**.Replace(expression, @".\Emotions\1.png");**
            }
        }

        return message;
    }
公共对象转换(对象值、类型targetType、对象参数、CultureInfo区域性) { //通过调用XAML代码传入转换器的消息 var消息=System.Convert.ToString(值); //对邮件执行线性搜索 for(int i=0;i&&i+2首先,您需要将属性从
Text
(它只是一个字符串)切换到
InlineCollection
,这正是您要查找的内容

然后,在转换器中,您应该根据收到的字符串返回该集合,然后

  • 当需要返回文本行时,可以返回
    Run
    class,其中包含文本
  • 当您需要返回图像时,您将返回一个
    图像
    类本身或包装到
    UIContainer
    中,我现在想不起该类的正确名称。:)

您看过中的建议了吗?在文本块中使用InlineUIContainer可能会解决问题。
<TextBlock Text="{Binding Content, Converter={converter:EmotionConverter}}" />