【发布时间】:2018-04-20 20:50:49
【问题描述】:
我正在使用一个richTextBox,它将根据文本更改线条(段落)的颜色。这是我的示例代码。
private void RTB_Main_SelectionChanged(object sender, RoutedEventArgs e)
{
Paragraph para = RTB_Main.CaretPosition.Paragraph;
TextRange TR = new TextRange(para.ContentStart, para.ContentEnd);
para.Foreground = TR.Text == "STATUS : PASS" ? Brushes.Green : TR.Text == "STATUS : FAIL" ? Brushes.Red : Brushes.Black;
}
在我尝试执行 Undo (ctrl + z) 操作之前一切正常。
问题场景:
在richTextBox 中输入STATUS : PASS。文本颜色将变为绿色(一切正常)。
按 Backspace 删除最后一个 S(状态:PAS)。文本颜色变为黑色(工作正常)。
现在按 Ctrl + z 来取回 S。这里什么都没有发生。
为什么撤消在这里不起作用?有没有更好的方法来格式化文本以便 Undo Redo 操作可以正常工作?
【问题讨论】: