我正在使用RichEditBox
构建一个简单的编辑器。
我找到了一段代码,它可以在文档窗口中的选择上切换粗体文本
private void RichEditBox_KeyDown(object sender, KeyRoutedEventArgs e)
{
var state = Window.Current.CoreWindow.GetKeyState(Windows.System.VirtualKey.Control);
if ((state & CoreVirtualKeyStates.Down) == CoreVirtualKeyStates.Down)
{
if (e.Key == Windows.System.VirtualKey.B)
{
if (Editor.Document.Selection.Text.Length > 0)
{
ITextCharacterFormat format = Editor.Document.Selection.CharacterFormat;
format.Bold = FormatEffect.On;
}
else
{
// CTRL + B should toggle bold mode on or off here.
}
}
}
}
当我突出显示一段文本并按CTRL+B
时,它会加粗文本。结果。但是,在那之后我输入的任何内容也都是粗体的。
这不是我所期望的。根据上面的代码,我只影响了 Selection 的格式。
当我选择一些文本并按下它时,应该在该选择上CTRL+B
切换粗体格式并保持默认格式不变。
我试过使用 FormatEffect.Toggle
format.Bold = FormatEffect.Toggle
我尝试先保存文档字符格式,然后重新应用
ITextCharacterFormat original_format = Editor.Document.GetDefaultCharacterFormat();
ITextCharacterFormat format = Editor.Document.Selection.CharacterFormat;
format.Bold = FormatEffect.On;
Editor.Document.SetDefaultCharacterFormat(original_format);
这应该将默认值重置为加粗后的状态。但它没有
我可以将选择设置为空,然后format.Bold = FormatEffect.Off
再次设置,然后重新选择文本,但这似乎很长(而且可能行不通)。必须有一个简单的方法来做到这一点?
注意:我已经用 RichTextBox 标签标记了它,因为没有 RichEditBox 标签。> 1500 rep的人可以添加一个吗?