2
我正在使用wpf richtextbox構建一個簡單的編輯器。這個編輯器有一些用於粗體,斜體,下劃線等的切換按鈕,當所選文本或光標處的文本具有適當屬性時,這些按鈕被「按下」。我這樣做是這樣的:WPF,RichTextBox在獲取光標位置的正確textproperties問題
private TextRange GetSelectedTextRange() {
if(_richTextBox == null) return null;
return new TextRange(_richTextBox.Selection.Start, _richTextBox.Selection.End);
}
private void UpdateIsItalic() {
TextRange selectedTextRange = GetSelectedTextRange();
if(selectedTextRange == null) {
IsItalic = false;
return;
}
object fontStyleObject = selectedTextRange.GetPropertyValue(Run.FontStyleProperty);
if(fontStyleObject is FontStyle) {
FontStyle fontStyle = (FontStyle)fontStyleObject;
IsItalic = (fontStyle == FontStyles.Italic || fontStyle == FontStyles.Oblique);
} else {
IsItalic = false;
}
}
的問題是,當光標在該行的末尾,例如在ToggleItalic命令到RichTextBox中發送的值我從SelectedTextRange.GetPropertyValue背後,是有效的對於文本,光標位於後面,而不是我要輸入的文本,因此我將返回與命令之前相同的值。但是我想要的是,當我發送ToggleItalic命令時,結果是當我打算輸入的字母是斜體時,IsItalic設置爲true。有沒有人有一個想法如何解決這個問題?
提前許多感謝,
Liewe