2009-05-05 14 views
5

Me voy a enfocar en el infierno ahora mismo en mi aplicación WPF. El foco está saltando entre los elementos, y aparentemente desapareciendo solo para aparecer en otro elemento cuando se presiona repetidamente la tecla de tabulación.¿Alguien tiene una buena manera de depurar el foco de WPF?

¿Hay alguna propiedad a la que pueda atarse una etiqueta o algo que simplemente me diga qué diablos se engancha el foco del teclado en ese momento? A veces puedo ver el rastro de hormiga (línea punteada) que indica que algo tiene foco, ¡pero no puedo decir qué es lo que lo rodea para apagar el foco del teclado!

Respuesta

0

Los problemas de enfoque pueden ser muy difíciles de analizar, ya que casi todo lo que haces con un depurador afecta el enfoque.

  • Una copia de espía ++ que viene con Visual Studio le mostrará los eventos que ocurren a diferentes controles; esto podría ayudar.
  • Puede registrar los eventos de foco y pérdida de foco en otro lugar (como un control de lista en otra ventana). O incluso configure el título de la ventana actual con el nombre del objeto actual con foco. Entonces podrías obtener una indicación de lo que actualmente tiene foco.

Una pregunta mejor para hacer es ¿por qué el enfoque salta alrededor? ¿Estás estableciendo explícitamente el foco? Quizás una pequeña sugerencia acerca de su implementación (es decir, qué contenedor (es) está usando) podría ayudarnos a responder.

+0

Es un WPF DataGrid desde el WPF Toolkit CTP. Por alguna razón, cuando elimino un elemento de la colección a la que está vinculado DataGrid, el foco salta desde el interior de la cuadrícula, a algo que está fuera de la cuadrícula. El sendero de hormigas aparece alrededor de toda la grilla. – Jippers

1

Lo que es probable que se busca es:

(System.Windows.Input.Keyboard.FocusedElement como FrameworkElement) .Nombre

Usted tendrá que configurar un DependencyProperty por ella para que pueda unirse a sin embargo.

Vaccano

+0

¿cómo podría hacer eso? Intento seguir el ejemplo de MSDN aquí pero no tengo mucha suerte. http://msdn.microsoft.com/en-us/library/system.windows.dependenobject.aspx – Jippers

0

Tal vez usted podría tratar de establecer valores propios de la propiedad TabIndex de los controles? Esto debería hacer que el foco "salte" sobre la "ruta" que desea que salte al presionar Tab.

0

Le recomiendo leer este artículo. Viene con algún código fuente que puede ayudar a resolver problemas de enfoque, a menudo termino usando este código para ayudar con mis propios problemas de enfoque.

http://julmar.com/blog/mark/?p=52

+0

El enlace está obsoleto. Ahora estoy totalmente curioso sobre el contenido. – BenL

Cuestiones relacionadas