Прежде всего, вы должны рассмотреть, хотите ли вы выбрать только всю строку (как в списке), или если вы хотите выбрать определенные символы из строки (как в текстовом поле).
ВВ первом случае я думаю, что ListView или даже ListBox должно быть достаточно, оба они поддерживают виртуализацию при привязке к коллекции, и не должно быть проблем с огромными объемами данных.Панель стека внутри ScrollViewer немного напоминает изобретение колеса для этого случая, и создание нового элемента управления, на мой взгляд, не очень вдохновляет (поскольку требуемая функциональность может быть достигнута с помощью существующих элементов управления в WPF).
Во втором случае, если вы хотите выделить какой-либо текст внутри строки, или если вы хотите перенос слов для самых длинных строк в журнале и хотите выбрать отдельные части обернутых строк, вам нужноиспользовать элемент управления, более ориентированный на отображение текста.Кент уже предложил RichTextBox, я бы добавил элемент управления AvalonEdit или даже элемент управления WebBrowser , в котором вы напрямую изменяете его HTMLDocument.