我有下面的代碼,以大膽文字italicise在RichEditBox:RichEditBox:使用CTRL + I設定斜體文本刪除文本
private async void Page_KeyDown(object sender, KeyRoutedEventArgs e)
{
var state = Window.Current.CoreWindow.GetKeyState(Windows.System.VirtualKey.Control);
if ((state & CoreVirtualKeyStates.Down) == CoreVirtualKeyStates.Down)
{
switch (e.Key)
{
case Windows.System.VirtualKey.B:
await BoldText();
break;
case Windows.System.VirtualKey.I:
await ItaliciseText();
break;
}
}
}
private async Task BoldText()
{
ITextSelection selectedText = editor.Document.Selection;
if (selectedText != null)
{
ITextCharacterFormat charFormatting = selectedText.CharacterFormat;
charFormatting.Bold = FormatEffect.Toggle;
selectedText.CharacterFormat = charFormatting;
}
}
private async Task ItaliciseText()
{
ITextSelection selectedText = editor.Document.Selection;
if (selectedText != null)
{
ITextCharacterFormat charFormatting = selectedText.CharacterFormat;
charFormatting.Italic = FormatEffect.Toggle;
selectedText.CharacterFormat = charFormatting;
}
}
BoldText()
和ItaliciseText()
也從工具欄上的按鈕調用。
當按下Bold
時,所選文本將被正確格式化爲粗體文本。
當按下CTRL+B
時,所選文本將被正確格式化爲粗體文本。
當按下Italic
,選定的文本格式化爲斜體正確
當按下CTRL+I
,選定的文本格式化爲斜體正確,但隨後被刪除
我知道的格式正在發生,因爲如果我按CTRL + Z,文本將以斜體顯示。在清除文本後,CTRL + I在selectedText.CharacterFormat = charFormatting;
之後引起附加操作。
我無法弄清楚爲什麼會出現這種情況,因爲代碼與完美無瑕的BoldText()代碼和單詞在工具欄上的按鈕發射時幾乎完全相同。
任何想法?
謝謝vutran,這是訣竅! – roryok
@ roryok不客氣。 – vutran