C# WPF:RichTextBox选择样式属性已重置

C# WPF:RichTextBox选择样式属性已重置,c#,wpf,richtextbox,selection,C#,Wpf,Richtextbox,Selection,我制作了一个简单的文本编辑器(基于RichTextBox),它可以加粗/倾斜/更改所选文本的字体大小。这些东西很好用——例如,我可以对同一个选择同时使用粗体和斜体 我最近添加了“大写”按钮: A而且还挺管用的。每当我单击它时,所选文本都是大写的,但其他属性(仅限于当前选择的)如FontStyle、FontWeight设置为normal,FontSize设置为default 有没有更好的方法来实现这一点?我运行了一些测试,从我的结果来看,RichTextBox总是采用选择前第一个字符的样式,而不是

我制作了一个简单的文本编辑器(基于RichTextBox),它可以加粗/倾斜/更改所选文本的字体大小。这些东西很好用——例如,我可以对同一个选择同时使用粗体和斜体

我最近添加了“大写”按钮:

A而且还挺管用的。每当我单击它时,所选文本都是大写的,但其他属性(仅限于当前选择的)如FontStyle、FontWeight设置为normal,FontSize设置为default


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

我运行了一些测试,从我的结果来看,RichTextBox总是采用选择前第一个字符的样式,而不是您提到的默认样式

这可能是因为

textField.Selection.Text = textField.Selection.Text.ToUpper();
将实际创建一个新字符串而不是编辑它(字符串在C#中是不可变的)
如果你想保持你的风格,我猜你必须迭代你的选择,并根据选择的字符创建它

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