私は 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;
}
コンバーターは XAML から呼び出されます
<TextBlock Text="{Binding Content, Converter={converter:EmotionConverter}}" />
これは機能しません。テキストを置き換えるだけだと思います。代わりに、画像を返す方法が必要です。これを行う方法について何かアドバイスはありますか?