Я использую RichEditBox
для создания простого редактора.Включение и выключение жирного текста с помощью ITextCharacterFormat в Windows Store/Modern UI App
я нашел кусок кода, который переключает жирный текст на выборе в окне документа
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
, это жирный шрифт текста. Результат. Однако все, что я набираю после этой точки, также выделено жирным шрифтом.
Это не то, что я ожидал. Согласно приведенному выше коду, я влияю только на формат выбора.
Когда я выбираю текст и нажимаю 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 повторить добавить один?
'Если текста не является в настоящее время selected' Обратите внимание мою линию логики' если (Editor.Document.Selection.Text.Length> 0) '. Это происходит, когда я сделал выделение в документе.Я хочу, чтобы он работал так, как работает Wordpad и Word, но в настоящее время он ведет себя по-другому. Когда я ** сделал выбор, он выделяет и выделение и включает полужирный режим. – roryok
В слове и слоте, если вы набираете текст сразу после текста, выделенного полужирным шрифтом, с помощью Ctrl + B, он будет выделен жирным шрифтом. Разве это не то, что у вас уже есть? – Jerry
Вышеприведенная цитата применяется, когда вы вводите текст после полужирного текста после нажатия ctrl + B. Если «SelectionFont» выделен жирным шрифтом, текст, который вы вводите, выделен жирным шрифтом. Свойство 'SelectionFont' принимает форматирование текста непосредственно перед курсором. – Jerry