【发布时间】:2011-01-25 20:15:03
【问题描述】:
我正在使用 wpf Richtextbox 构建一个简单的编辑器。此编辑器具有某种用于粗体、斜体、下划线等的切换按钮,当所选文本或光标处的文本具有相应属性时,这些按钮会被“按下”。我是这样做的:
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。有没有人知道如何解决这个问题?
非常感谢,
列维
【问题讨论】:
标签: wpf richtextbox