Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
27.08.2015, 19:16
|
|||
---|---|---|---|
|
|||
WPF: Торможение потокового документа |
|||
#18+
Сделал примитивное окошко для вывода лога (текстовый лог, но строки могут быть разного цвета). Примерно так: Код: xml 1. 2. 3.
Код: c# 1. 2. 3. 4. 5. 6. 7.
При 400 элементах лога уже начинает заметно подтормаживать, как добавление элементов, так и скроллирование самого лога. Неужели для потокового документа это уже достаточно тяжелое визуальное дерево? А как же тогда работают мощные потоковые документы, там же могут быть и тысячи примитивных элементов? Или я просто что-то плохо понимаю/что-то не так делаю? Или же надо плюнуть и использовать какой-нибудь ListBox с виртуализацией? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
27.08.2015, 21:55
|
|||
---|---|---|---|
|
|||
WPF: Торможение потокового документа |
|||
#18+
Shocker.ProСделал примитивное окошко для вывода лога (текстовый лог, но строки могут быть разного цвета). Примерно так: Код: xml 1. 2. 3.
Код: c# 1. 2. 3. 4. 5. 6. 7.
При 400 элементах лога уже начинает заметно подтормаживать, как добавление элементов, так и скроллирование самого лога. Неужели для потокового документа это уже достаточно тяжелое визуальное дерево? А как же тогда работают мощные потоковые документы, там же могут быть и тысячи примитивных элементов? Или я просто что-то плохо понимаю/что-то не так делаю? Или же надо плюнуть и использовать какой-нибудь ListBox с виртуализацией? любая прокручиваемая область виртуализируются. Если это лог, логично разбить его на строки и выводить их в панели виртуализации VirualizationStackPanel через ItemsControl, если нужен другой подход, не ItemsControl, можно сделать свой Visual объект или даже Render. В качестве строк может легко выступить TextBlock, у него есть свойство Inling для Span и прочего. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
28.08.2015, 07:42
|
|||
---|---|---|---|
WPF: Торможение потокового документа |
|||
#18+
Shocker.ProИли же надо плюнуть и использовать какой-нибудь ListBox с виртуализацией?Да, в WPF визуальное дерево очень прожорливое. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
28.08.2015, 07:44
|
|||
---|---|---|---|
WPF: Торможение потокового документа |
|||
#18+
Roman MejtesShocker.ProСделал примитивное окошко для вывода лога (текстовый лог, но строки могут быть разного цвета). Примерно так: Код: xml 1. 2. 3.
Код: c# 1. 2. 3. 4. 5. 6. 7.
При 400 элементах лога уже начинает заметно подтормаживать, как добавление элементов, так и скроллирование самого лога. Неужели для потокового документа это уже достаточно тяжелое визуальное дерево? А как же тогда работают мощные потоковые документы, там же могут быть и тысячи примитивных элементов? Или я просто что-то плохо понимаю/что-то не так делаю? Или же надо плюнуть и использовать какой-нибудь ListBox с виртуализацией? любая прокручиваемая область виртуализируются. Если это лог, логично разбить его на строки и выводить их в панели виртуализации VirualizationStackPanel через ItemsControl, если нужен другой подход, не ItemsControl, можно сделать свой Visual объект или даже Render. В качестве строк может легко выступить TextBlock, у него есть свойство Inling для Span и прочего.Может проще тогда сгенерировать HTML и показать его в WebBrowser? :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
|
28.08.2015, 08:38
|
|||
---|---|---|---|
|
|||
WPF: Торможение потокового документа |
|||
#18+
Алексей КМожет проще тогда сгенерировать HTML и показать его в WebBrowser? :-)Лог заполняется в реальном времени и по умолчанию автопрокручивается. То есть пользователь при желании может сидеть и пялиться в лог. Так что подход с html наверно будет менее удобным. Ок, попробую применить панель виртуализации. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
25.11.2015, 22:04
|
|||
---|---|---|---|
WPF: Торможение потокового документа |
|||
#18+
Алексей КShocker.ProИли же надо плюнуть и использовать какой-нибудь ListBox с виртуализацией?Да, в WPF визуальное дерево очень прожорливое. Где-то была инфа, что отображение кода в редакторе кода Студии (в 2010, чтоли) - это потоковый документ, где весь код - span'ы, run'ы и прочие элементы этого потокового документа. И как они умудрились? А в 2012 - всё переписано на самописное, вроде. Вот визуальное дерево в Студии 2012 - пока добрался до отрисовки кода, задолбался в Snoop'е дерево раскрывать. Какие-то рендеренные линии - каждая линия отдельно рендерится. Причём нумерация строк кода - тоже отдельный элемент. При такой охрененной вложенности элементов - удивляюсь, как у них ничего не тормозит в этой Студии. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
28.11.2015, 15:25
|
|||
---|---|---|---|
WPF: Торможение потокового документа |
|||
#18+
Я как-то пару лет назад задавал в MSDN вопрос - почему при добавлении String'ов в ListBox в визауальном дереве есть ListBoxItem, но свойствао SelectedItem возвращает String. Как видно из моего текста, самый быстрый способ - использовать ItemsSource. Тогда названия файлов быстро добавляются. Но тогда я получу String. А чтобы получить ListBoxItem, я должен явно создавать ListBoxItem, но тогда прога начинает тормозить. Вот в чём и бред - во всех трёх описанных мною способах добавления в визуальном дереве - ListBoxItem, но SelectedItem всё же возвращает разные результаты. :( ... |
|||
:
Нравится:
Не нравится:
|
|||
|
28.11.2015, 19:46
|
|||
---|---|---|---|
|
|||
WPF: Торможение потокового документа |
|||
#18+
Smith27, дело в том, что сделать Visual объект в виде строки проще пареной репки, а по ресурсам это будет на много дешевле. везде говорится, хотите производительности в WPF, переходите на Visual, с FrameworkElements. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
|
start [/forum/topic.php?fid=21&mobile=1&tid=1440767]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
159ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 261ms |
0 / 0 |