WPF取代smiley';s在带有笑脸图标的消息中
我正在用WPF(使用MVVM)编写一个聊天应用程序,当用户向聊天流中提交消息时,我想用实际的笑脸图标替换任何笑脸表达式,如:-):-/:-D等 我已经编写了一个转换器来对消息进行线性搜索并识别笑脸。我的问题是,一旦我识别了一个笑脸表情,我如何用实际图标替换包含笑脸的文本块 如果你觉得有更好或更有效的方法,我很想知道WPF取代smiley';s在带有笑脸图标的消息中,wpf,xaml,mvvm,Wpf,Xaml,Mvvm,我正在用WPF(使用MVVM)编写一个聊天应用程序,当用户向聊天流中提交消息时,我想用实际的笑脸图标替换任何笑脸表达式,如:-):-/:-D等 我已经编写了一个转换器来对消息进行线性搜索并识别笑脸。我的问题是,一旦我识别了一个笑脸表情,我如何用实际图标替换包含笑脸的文本块 如果你觉得有更好或更有效的方法,我很想知道 public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
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;iText
(它只是一个字符串)切换到InlineCollection
,这正是您要查找的内容
然后,在转换器中,您应该根据收到的字符串返回该集合,然后
- 当需要返回文本行时,可以返回
class,其中包含文本Run
- 当您需要返回图像时,您将返回一个
类本身或包装到图像
中,我现在想不起该类的正确名称。:)UIContainer
<TextBlock Text="{Binding Content, Converter={converter:EmotionConverter}}" />