2011-05-13 10 views
8

Me gustaría un control de log-viewer eficiente en WPF que simplemente muestra un registro en vivo cuando se agregan los mensajes. No es ningún problema conectarse a las notificaciones del sistema de registro, pero me preocupa que una ventana de registro se ralentice con cada línea de registro añadida una vez que el número de líneas de registro crezca.Eficiente live-log-viewer en WPF

Los eventos de notificación de registro simplemente proporcionarán una cadena de registro (junto con algunos metadatos) que quiero adjuntar a las líneas en un cuadro de texto o similar con una barra de desplazamiento. Suponiendo que hay mucha memoria, agregar una gran cantidad de líneas no debería ser un problema de memoria, pero no me gustaría que el sistema se desacelere una vez que se agrega la línea número 10,000.

Supongo que vincular un TextBox a una propiedad de dependencia de cadena simple se volverá bastante lento una vez que la cadena está entrando en el tamaño de MB y miles de líneas.

¿Cómo podría escribir tal control de manera eficiente en WPF?

+0

relacionada: [¿qué es una forma rápida de presentar una vista de registro en WPF?] (http://stackoverflow.com/questions/430609/what-is-a-fast-way-to-render-a-log-view-in-wpf) – publicgk

Respuesta

11

¿por qué no utilizar un listbox? Cree una colección donde agregue su mensaje de registro cada vez y simplemente vincule esta colección a sus artículos.

EDIT: Puedo utilizar una cuadrícula de datos en mis proyectos para mostrar mensajes procedentes de un servicio WCF

Edit2: algunos Itemsscontrols tienen las siguientes property que debería ayudar:

<ListBox VirtualizingStackPanel.IsVirtualizing="True" /> 
+0

Es un cuadro de lista que se actualiza de manera eficiente cuando se agrega el número de línea 10,000? Si es así, supongo que debería funcionar. – Holstebroe

+0

y está actualizando su colección pero no el control de elementos directamente :) en su interfaz de usuario solo ve un pequeño subconjunto de toda la colección. La virtualización es la clave. ver mi EDIT2 – blindmeis