在 WPF RichTextBox 中将特定文本设置为粗体
Set specific text to bold in WPF RichTextBox
我正在扩展 WPF Richtextbox 的功能。我希望某些文本在我输入时变为粗体。我能够将某些文本设为粗体,但粗体字后面的文本也会变为粗体...
这是我的代码示例:
private bool _Running = false;
void CustomRichTextBox_TextChange(object sender, TextChangedEventArgs e)
{
if(_Running)
return;
_Running = true;
//Logic to see if text detected
//Logic to get TextPointers
//Logic to get TextRange
var boldMe = new TextRange(textPointer1, textPointer2);
//Bold text
boldMe.ApplyPropertyValue(TextElement.FontWeightProperty, FontWeights.Bold);
_Running = false;
}
我要:
不加粗不加粗加粗不加粗
但我得到的是:
不加粗不加粗加粗不加粗
**请注意,输入时它会变成粗体。
如何防止加粗字词后的文本也变为加粗?
不是重复的问题,因为提供的已接受解决方案 link 适用于 WinForms,其余的适用于预设文本。
您需要检测何时不再检测到您需要的文本,可能是 space,然后删除粗体值并将其重置为正常。
经过多次测试,我想出了一个简单的解决方案。
CaretPosition = CaretPosition.GetPositionAtOffset(0, LogicalDirection.Forward);
这将插入符号设置为正确的方向,防止 BOLD 设置在 运行 对象中继续。
if(textPointerEnd.GetNextInsertionPosition(LogicalDirection.Forward) == null)
new Run("", textPointerEnd);
这会将 运行 对象添加到位于段落对象末尾的新粗体对象的末尾。
我正在扩展 WPF Richtextbox 的功能。我希望某些文本在我输入时变为粗体。我能够将某些文本设为粗体,但粗体字后面的文本也会变为粗体...
这是我的代码示例:
private bool _Running = false;
void CustomRichTextBox_TextChange(object sender, TextChangedEventArgs e)
{
if(_Running)
return;
_Running = true;
//Logic to see if text detected
//Logic to get TextPointers
//Logic to get TextRange
var boldMe = new TextRange(textPointer1, textPointer2);
//Bold text
boldMe.ApplyPropertyValue(TextElement.FontWeightProperty, FontWeights.Bold);
_Running = false;
}
我要:
不加粗不加粗加粗不加粗
但我得到的是:
不加粗不加粗加粗不加粗
**请注意,输入时它会变成粗体。
如何防止加粗字词后的文本也变为加粗?
不是重复的问题,因为提供的已接受解决方案 link 适用于 WinForms,其余的适用于预设文本。
您需要检测何时不再检测到您需要的文本,可能是 space,然后删除粗体值并将其重置为正常。
经过多次测试,我想出了一个简单的解决方案。
CaretPosition = CaretPosition.GetPositionAtOffset(0, LogicalDirection.Forward);
这将插入符号设置为正确的方向,防止 BOLD 设置在 运行 对象中继续。
if(textPointerEnd.GetNextInsertionPosition(LogicalDirection.Forward) == null)
new Run("", textPointerEnd);
这会将 运行 对象添加到位于段落对象末尾的新粗体对象的末尾。