Многострочное текстовое поле WPF для большого содержимого

в приложении WPF я хочу создать панель вывода "найти в файлах", в которой я могу передавать большое количество текста без перераспределения памяти в каждой строке, например TextBox будет делать.

WPF TextBox один Text свойство, которое хранит непрерывную последовательность. Каждый раз, когда я хочу добавить контент, мне нужно сделать textBox.Text += "New Text" - это плохо.

В идеале этот элемент управления будет виртуальным и потребует минимум ресурсов, только для видимого русло.

Я думал об использовании стандарта ListBox С VirtualizingStackPanel, но он не позволяет выбирать текст по строкам.

(в каждой новой добавленной строке я хочу, чтобы элемент управления обновлялся)

какие будут предложения?

4 ответов


Если вы не ожидаете гораздо больше, чем десять тысяч результатов поиска в вашем приложении, элемент управления TextBlock или только для чтения многострочного текстового поля будет достаточно.

класс TextBox имеет метод AppendText (), который должен быть достаточно быстрым для вас.

Если вам нужна подсветка / форматирование текста, возможно, вы хотите использовать RichTextBox.


Если у вас действительно большой контент, то, к сожалению, все текстовые поля WPF и аналогичные элементы управления очень медленные. См.этот вопрос. Вы могли бы использовать AvalonEdit в качестве замены.


вы рассматривали или пробовали RichTextBox контроля?


StringBuilder, просто добавьте текст в строковый конструктор и вместо того, чтобы делать

textBox.Text += moreText;

do

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

Это должно позаботиться о Schlemiel художника.

конечно, строитель строк должен быть членом вашего класса, чтобы он существовал через жизненный период вашего объекта.