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