WPFリッチテキストボックスで発生するすべてのノーブレークスペースを強調表示しています。目的のテキスト範囲が見つかったら、次のように呼び出します。
textrange.ApplyPropertyValue(TextElement.BackgroundProperty, Brushes.DarkRed);
そしてそれはうまくいきます。ただし、ドキュメントの最後で強調表示が行われる場合は、新しく入力されたすべてのテキストも強調表示されます。これは問題です。誰かがこれを修正する方法の手がかりを持っていますか?
完全なコード:
private void HighLightNonbreakSpace()
{
var start = this.Document.ContentStart;
char nonBreakSpace = System.Convert.ToChar(160);
while (start != null && start.CompareTo(this.Document.ContentEnd) < 0)
{
if (start.GetPointerContext(LogicalDirection.Forward) == TextPointerContext.Text)
{
var match = start.GetTextInRun(LogicalDirection.Forward).IndexOf(nonBreakSpace);
if (match >=0)
{
var matchPos = start.GetPositionAtOffset(match, LogicalDirection.Forward);
var textrange = new TextRange(matchPos, matchPos.GetPositionAtOffset(1,LogicalDirection.Forward));
textrange.ApplyPropertyValue(TextElement.BackgroundProperty, Brushes.DarkRed);
start = textrange.End;
}
}
start = start.GetNextContextPosition(LogicalDirection.Forward);
}
}