wpf обновление текстового блока - PullRequest
0 голосов
/ 28 мая 2011

Я пытаюсь создать некоторую форму области обновления в wpf. Это должно быть доступно для данных, так как оно будет связано с живым потоком текста, который будет постоянно отображаться.

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

Пользователь: Test :: Test: TextData

Пользователь: NextTest :: Test: TestData

и т. Д. Для каждого элемента в новой строке, поэтому необходимо, чтобы объект был с возможностью прокрутки вверх в формате прокрутки, чтобы новый элемент был добавлен в нижнюю часть.

В настоящее время я использую:

<ScrollViewer VerticalScrollBarVisibility="Auto">
    <StackPanel>
        <TextBox Margin="5" TextWrapping="Wrap" AcceptsReturn="True" IsReadOnly="True" x:Name="LogDetails"></TextBox>
    </StackPanel>
</ScrollViewer>

Однако это не очень хорошо показывает данные, данные основаны только на строках, кто-нибудь знает лучшее решение?

Спасибо

1 Ответ

1 голос
/ 28 мая 2011

Вопрос немного расплывчат, но вот попытка:
Как вариант, почему бы не использовать TextBlock вместо TextBox, если текст меняется автоматически?
Предупреждение: Если выхотите использовать TextBox, не забудьте установить UndoLimit на 0.В противном случае у вас будет много потребления памяти, если вы будете постоянно изменять содержимое TextBox.

<TextBox UndoLimit="0" .../>

Если ваш текст представляет собой конкатенацию нескольких строковых элементов, создайте макет с сеткой и используйте несколько текстовых блоковпоказывать данные более красиво?Может быть, есть также некоторые данные, которые вы можете визуализировать как символы?

Если это журнал, может быть, вы хотите заполнить список строками и установить этот список как ItemsSource для ItemsControl?Через свойство ItemTemplate вы можете указать макет каждого элемента?Используйте ObservableCollection<string>, тогда вам нужно только добавить строки в коллекцию, и ItemsControl обновится автоматически.Для такого журнала вы можете использовать ItemsControl, ListBox, ListView.

...