我正在扩展WPF Richtextbox的功能。当我输入时,我希望某些文本变为粗体。我能够将某些文本变为粗体,但粗体字后面的文本也会变得粗体...
以下是我的代码示例:
void BoxApp::makeVertex()
{
Vertex vertices[] =
{
{ XMFLOAT3(-1.0f, -1.0f, -1.0f), (const XMFLOAT4)Colors::White },
{ XMFLOAT3(-1.0f, +1.0f, -1.0f), (const XMFLOAT4)Colors::Black },
{ XMFLOAT3(+1.0f, +1.0f, -1.0f), (const XMFLOAT4)Colors::Red },
{ XMFLOAT3(+1.0f, -1.0f, -1.0f), (const XMFLOAT4)Colors::Green },
{ XMFLOAT3(-1.0f, -1.0f, +1.0f), (const XMFLOAT4)Colors::Blue },
{ XMFLOAT3(-1.0f, +1.0f, +1.0f), (const XMFLOAT4)Colors::Yellow },
{ XMFLOAT3(+1.0f, +1.0f, +1.0f), (const XMFLOAT4)Colors::Cyan },
{ XMFLOAT3(+1.0f, -1.0f, +1.0f), (const XMFLOAT4)Colors::Magenta }
};
rotating_angle += 0.01;
for (int i = 0; i < 8; i++) {
XMStoreFloat3(&vertices[i].pos, XMVector3Transform(XMLoadFloat3(&vertices[i].pos),
XMMatrixTranslation(0.0f, 1.0f, 1.0f) *
XMMatrixRotationX(rotating_angle) *
XMMatrixTranslation(0.0f, -1.0f, -1.0f)
));
}
D3D11_BUFFER_DESC vbd;
... #Set BUFFER_DESC
D3D11_SUBRESOURCE_DATA vinitData;
... #Set SUBRESURCE
md3dDevice->CreateBuffer(&vbd, &vinitData, &mBoxVB);
}
我想:
NOTBOLDED NOTBOLDED BOLDED NOTBOLDED
但我得到的是:
NOTBOLDED NOTBOLDED BOLDED NOTBOLDED
**请注意,输入时会变粗。
如何阻止粗体字后的文字变粗体?
不重复的问题,因为提供的链接的接受解决方案是针对WinForms的,其余的是预设文本。
答案 0 :(得分:3)
经过多次测试,我找到了一个简单的解决方案。
CaretPosition = CaretPosition.GetPositionAtOffset(0, LogicalDirection.Forward);
这会将插入符设置在正确的方向,防止BOLD设置在Run对象中继续。
if(textPointerEnd.GetNextInsertionPosition(LogicalDirection.Forward) == null)
new Run("", textPointerEnd);
这会将Run对象添加到位于Paragraph对象末尾的新Bold对象的末尾。
答案 1 :(得分:1)
您需要检测何时不再检测到所需文本,可能是在出现空格时,然后删除粗体值并将其重置为正常值。