この問題を解決しようとしました。私はテキストとドキュメントのプロパティのためのbindable richTextBoxを持っています、このコントロールは、拡張WPFツールキットからのrichTextBoxから派生しています。ユーザーの入力中にテキストを笑顔のテキストに変換する
私はrichTextBoxにテキストを入力しています。テキストの絵文字を書いた場合、このテキストの絵文字をイメージの絵文字に変換し、richTextBoxに表示します。例えば
:こんにちは:) - >こんにちは、世界のIMAGE_SMILE
私はテキストと画像と段落のタイプに顔文字で文字列を変換独自のクラスを持っています。ここで
はそれをイスト:WPFアプリケーションで
public Paragraph ConvertToMessageWithEmoticons(string rpText){...}
私はRichTextBoxコントロールのテキストやドキュメントのプロパティのプロパティをバインドします。
//bind on Text property of richTextBoxControl
public string RtbText
{
get { return _rtbText; }
set
{
_rtbText = value;
NotifyPropertyChanged("RtbText");
}
}
//bind on Document property of richTextBoxControl
public FlowDocument RtbFlowDocument
{
get { return _rtbFlowDocument; }
set
{
_rtbFlowDocument = value;
NotifyPropertyChanged("RtbFlowDocument");
}
}
は、私は、.NET(Rx)のための反応性の拡張機能を使用して、プロパティRtbText
にオブザーバーを作る Observable.FromEvent<PropertyChangedEventArgs>(this, "PropertyChanged")
.Where(e => e.EventArgs.PropertyName == "RtbText")
.Select(_ => this.RtbText)
.Where(text => text.Length > 1)
.Do(AddSmiles)
.Throttle(TimeSpan.FromSeconds(500))
.Subscribe(AddSmiles);
私の問題は、絵文字をテキストに笑顔でテキストを置き換える方法をエレガントです。
private void AddSmiles(string text)
{
Paragraph paragraph = _smileConverter.ConvertToMessageWithEmoticons(RtbText);
RtbFlowDocument.Blocks.Clear();
RtbFlowDocument.Blocks.Add(paragraph);
}
私は笑顔でRtbTextの唯一の3最後の文字をチェックしてみますが、ユーザータイピングプロパティがある場合RtbTextはまだ変更されています。私はこれを試してみてください。
ユーザーの入力中にテキストとテキストを笑顔で置き換える方法についてアドバイスしますか?