RichtextBox内联编辑

时间:2016-02-19 14:42:41

标签: c# wpf richtextbox paragraph

我有一系列句子。每个句子都是richtextbox的FlowDocument的Inlines属性中的一个新的Run对象。 每个句子都有颜色。

.map(MyClass::createSomeValue) //

当我正在编辑这样的句子时(我改变了#39;是' y1111111111111es')

我希望得到相同的Run对象,其中包含来自' yes'到' y1111111111111es'但我改为使用' y',#11; 1111111111111111111'并且' es'

这就是我如何检索短信

        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);

当我更改文本时,有没有办法编辑本机Run对象中的文本而不填充新的Run对象

1 个答案:

答案 0 :(得分:0)

似乎FlowDocument会动态添加运行以鼓励设计包装。

我从另一个stackoverflow post看到,如果您使用TextBlock而不是在Paragraphs中运行,则可以保留文本并删除运行并防止换行。

在第二个区块尝试此操作:

    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());