2009-05-05 9 views
13

Cuando selecciono un elemento en mi vista de árbol, hay un intervalo de tiempo notable desde mi clase del modelo de vista que se instancia a la vista refrescante y el nodo de la vista en árbol está hi-iluminado.Cómo detectar el enlace de datos completado en WPF

Necesito mostrar un cursor de espera durante este tiempo - He intentado envolver el código que ejemplifica mi clase de viewmodel, pero el cursor vuelve a una flecha unos segundos antes de que todo el enlace de datos parezca terminar y el nodo recibe hi-litio. ¿Hay algún evento que me diga cuándo terminó el enlace o cuándo el nodo está iluminado?

Esto no tiene nada que ver con la expansión de nodos, simplemente seleccionando nodos de nivel superior.

Gracias por cualquier ayuda.

Respuesta

8

El evento Cargado en el control TreeView deseado ocurrirá después de que se hayan configurado todas las conexiones. Creo que sucede antes de que todo se haya dibujado, por lo que podría no ser exactamente lo que necesitas.

+1

Estoy totalmente de acuerdo, ver http://blogs.msdn.com/b/mikehillberg/archive/2006/09/19/loadedvsinitialized.aspx – Artru

1

¿Hay un "bloqueo" cuando se produce esta brecha? Quizás necesites poner la lógica pesada en un hilo separado o simplemente usar la propiedad IsAsync de la clase Binding. Es posible que también desee consultar Priority Binding. Here es un artículo bastante bueno sobre cómo usarlo.

0

Puede anular el control OnContentRendered for Window.

7

Puede recibir una notificación cuando el objetivo o cuando se actualiza la fuente.

<TreeViewItem> 
    <TextBlock Name="NameText" 
     Text="{Binding Path=Name, Mode=OneWay, NotifyOnTargetUpdated=True}" 
     TargetUpdated="OnTargetUpdated"/> 
</TreeViewItem> 
Cuestiones relacionadas