代码之家  ›  专栏  ›  技术社区  ›  decasteljau

用于大内容的WPF多行文本框

  •  18
  • decasteljau  · 技术社区  · 15 年前

    在WPF应用程序中,我希望构建一个“在文件中查找”输出窗格,在该窗格中,我可以流式传输大量文本,而不必在每行重新分配内存,如 TextBox 会的。

    WPF 文本框 有一个 Text 存储连续字符串的属性。每次,我都想添加内容,我需要这样做 textBox.Text += "New Text" 这是不好的。

    理想情况下,该控件将是虚拟的,并且只对可见行需要最少的资源。

    我想用标准 ListBox 用一个 VirtualizingStackPanel ,但不允许跨行选择文本。

    (在添加的每一行,我希望控件更新)

    有什么建议吗?

    4 回复  |  直到 13 年前
        1
  •  17
  •   codymanix    15 年前

    如果应用程序中的搜索结果不超过10000个,那么到目前为止,文本块控件或只读多行文本框就足够了。

    TextBox类有一个AppendText()方法,该方法应该足够快。

    如果您需要文本突出显示/格式化,那么可能需要使用richtextbox。

        2
  •  5
  •   Community raghavsood33    7 年前

    如果您的内容非常大,那么不幸的是,所有WPF文本框和类似的控件都非常慢。见 this question . 你可以使用 AvalonEdit 作为替代品。

        3
  •  0
  •   Drew Noakes    15 年前

    你是否考虑过或尝试过 RichTextBox 控制?

        4
  •  -1
  •   Carlo    15 年前

    一个字符串生成器,只需将文本附加到字符串生成器,而不是执行

    textBox.Text += moreText;
    

    myStringBuilder.Append(moreText);
    textBox.Text = myStringBuilder.ToString();
    

    这应该考虑到 Schlemiel the Painter's 算法。

    当然,字符串生成器应该是类的成员,这样它就可以在对象的生命周期中存在。