- WPF

2010-01-27 12 views
9

Todo en WPF:- WPF

El desarrollo de una aplicación de asistente, el usuario tiene que responder a una serie de preguntas sencillas antes señalados a la aplicación principal. La aplicación principal se completa con la información obtenida del asistente.

Comencé con una ventana en la que luego planifiqué agregar controles de usuario. La ventana principal tendría el control del usuario en la primera fila, luego los botones Siguiente y Anterior para controlar el movimiento entre los controles en la segunda fila. Esta manera de que pudiera controlar fácilmente la lógica para cambiar entre las pantallas como:

WizardControl1.IsVisible = false; 
WizardControl2.IsVisible = true; 

Pero por alguna razón, los controles de usuario no tiene colocador de IsVisible. Viva.

Entonces pensé que usaría ventanas separadas para cada sección del asistente. El problema con este enfoque es que ahora, al pasar de uno a otro, la ventana se abre en posiciones aleatorias, y al pasar el asistente a la siguiente, la siguiente ventana aparece aleatoriamente, lo cual es realmente molesto y frustrante.

Entonces, ¿cómo puedo desarrollar un asistente correctamente? No entiendo por qué esto es tan difícil ... no es exactamente ciencia de cohetes ... ¡reemplazando el texto y los controles y almacenando la entrada después de presionar siguiente/anterior!

Gracias

Respuesta

3

probablemente me aproach esto utilizando el enlace de datos y selectores de plantilla. Haga que el asistente se una a una clase "WizardData", que expone una lista de clases base de "WizardPage".

clase El WizardData puede mostrar las propiedades que definen la información correcta sobre las formas, y mostrar un control de la página principal que utiliza un selector de plantillas para determinar el control adecuado para mostrar basado en el tipo real de la página en particular asistente.

Parece más trabajo de lo que realmente es. También le brinda el beneficio de una buena separación entre el código y la IU (todo el "trabajo" lo realizan las clases WizardData y WizardPage) y la capacidad de probar la lógica independientemente de la IU.

También es una manera muy WPF/MVVM de abordar el problema.

+0

¿Sabe usted dónde están los ejemplos que podría ayudar me empezó? No estoy seguro de cómo hacer lo que dice "Haga que el asistente se una a una clase" WizardData ", que expone una lista de clases base de" WizardPage "" – baron

+0

Veré si puedo dar un ejemplo rápido juntos. – kyoryu

0

Reconozco que esto no aborda directamente su pregunta, pero pensé que lo mencionaría como una posible alternativa. He usado el control Wizard de Actipro con muy buenos resultados, y cuando he necesitado ayuda, han sido muy receptivos. No estoy afiliado a ellos de ninguna manera; Simplemente me gusta no tener que escribir la plomería para administrar un asistente.

0
  1. La propiedad se llama "Visibilidad".
  2. Me parece que me va mejor cuando agrego y quito dinámicamente controles en lugar de ocultarlos.
0

Estaba buscando una solución de asistente también. Tengo la necesidad de seguir con los componentes de stock WPF así que implementé el asistente usando un formulario estándar y un control de pestañas.

Solo oculto las pestañas en tiempo de ejecución para que estén disponibles en el IDE. En tiempo de ejecución sólo tiene que utilizar Atrás, Siguiente, Finalizar ... para navegar a través de los elementos de la ficha

funciona bien