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为默认。
有没有更好的方法来实现这个?
我运行了一些测试,从我的结果看来,RichTextBox将始终从你的选择之前的第一个字符的样式,而不是默认的样式,你提到
这可能是因为
textField.Selection.Text = textField.Selection.Text.ToUpper();
将创建一个新的字符串,而不是编辑它(字符串在c#中是不可变的)
如果你想保持你的样式,我猜你必须迭代你的选择,并创建每个选定的字符