WPF: RichTextBox选择样式属性被重置

本文关键字:属性 样式 RichTextBox 选择 WPF | 更新日期: 2023-09-27 18:04:55

我做了一个简单的文本编辑器(基于RichTextBox),可以加粗/倾斜/改变选定文本的字体大小。这些东西工作得很好-例如,我可以在同一个选区中同时应用粗体和斜体。

我最近添加了"大写"按钮:

private void buttonCapitalize_Click(object sender, RoutedEventArgs e)
{
    if (!textField.Selection.IsEmpty)
    {
        textField.Selection.Text = textField.Selection.Text.ToUpper();
    }
}

和它kinda工作。每当我点击它,选定的文本大写,但其他属性(仅限当前选择),如FontStyle, FontWeight设置为正常和FontSize为默认。

有没有更好的方法来实现这个?

WPF: RichTextBox选择样式属性被重置

我运行了一些测试,从我的结果看来,RichTextBox将始终从你的选择之前的第一个字符的样式,而不是默认的样式,你提到

这可能是因为

textField.Selection.Text = textField.Selection.Text.ToUpper();

将创建一个新的字符串,而不是编辑它(字符串在c#中是不可变的)
如果你想保持你的样式,我猜你必须迭代你的选择,并创建每个选定的字符