内嵌 RichtextBox 编辑
RichtextBox editing inline
我有一组句子。每个句子都是一个新的 运行 对象,位于 richtextbox 的 FlowDocument 的 Inlines 属性 中。
每个句子都有颜色。
var paragraph = new Paragraph();
foreach (var sentence in Sentences)
{
....
paragraph.Inlines.Add(new Run { Text = sentence, Background = new SolidColorBrush(color) });
}
tbText.Document.Blocks.Add(paragraph);
当我这样编辑句子的时候(我把'yes'改成了'y1111111111111es')
我希望得到相同的 运行 对象,但文本从 'yes' 更改为 'y1111111111111es',但我得到了 3 个 运行 对象 'y', '1111111111111111111' 和 'es'
这就是我检索文本的方式
foreach (Paragraph paragraph in tbText.Document.Blocks)
{
foreach (Run inline in paragraph.Inlines)
{
editedTextes.Add(inline.Text);
}
}
有什么方法可以在更改文本
时编辑本机 运行 对象中的文本而不填充新的 运行 对象
似乎 FlowDocument 动态添加 运行 以鼓励设计包装。
我从另一个 Whosebug post 那里看到,如果您在段落中使用 TextBlock 而不是 运行s,您可以保留文本并删除 运行s 并防止换行.
在你的第二个区块试试这个:
foreach (Paragraph paragraph in tbText.Document.Blocks)
{
var sb = new StringBuilder();
foreach (Run inline in paragraph.Inlines)
{
sb.Append(inline.Text);
}
editedTextes.Add(new TextBlock()
{
Text = sb.ToString(),
TextWrapping = TextWrapping.NoWrap
});
}
如果您不喜欢 TextBlocks,则在构建字符串后添加一个 运行:
editedTextes.Add(sb.ToString());
我有一组句子。每个句子都是一个新的 运行 对象,位于 richtextbox 的 FlowDocument 的 Inlines 属性 中。 每个句子都有颜色。
var paragraph = new Paragraph();
foreach (var sentence in Sentences)
{
....
paragraph.Inlines.Add(new Run { Text = sentence, Background = new SolidColorBrush(color) });
}
tbText.Document.Blocks.Add(paragraph);
当我这样编辑句子的时候(我把'yes'改成了'y1111111111111es')
我希望得到相同的 运行 对象,但文本从 'yes' 更改为 'y1111111111111es',但我得到了 3 个 运行 对象 'y', '1111111111111111111' 和 'es'
这就是我检索文本的方式
foreach (Paragraph paragraph in tbText.Document.Blocks)
{
foreach (Run inline in paragraph.Inlines)
{
editedTextes.Add(inline.Text);
}
}
有什么方法可以在更改文本
时编辑本机 运行 对象中的文本而不填充新的 运行 对象似乎 FlowDocument 动态添加 运行 以鼓励设计包装。
我从另一个 Whosebug post 那里看到,如果您在段落中使用 TextBlock 而不是 运行s,您可以保留文本并删除 运行s 并防止换行.
在你的第二个区块试试这个:
foreach (Paragraph paragraph in tbText.Document.Blocks)
{
var sb = new StringBuilder();
foreach (Run inline in paragraph.Inlines)
{
sb.Append(inline.Text);
}
editedTextes.Add(new TextBlock()
{
Text = sb.ToString(),
TextWrapping = TextWrapping.NoWrap
});
}
如果您不喜欢 TextBlocks,则在构建字符串后添加一个 运行:
editedTextes.Add(sb.ToString());