2010-03-01 7 views
5

Actualmente estoy aprendiendo cómo hacer un uso avanzado de WPF a través del proyecto Prism (Composite WPF).StockTrader RI> Controladores, presentadores, WTF?

me ve muchos vídeos y ejemplos y la aplicación de demostración StockTraderRI me hace esta pregunta:

¿Cuál es el papel exacto de cada una de las siguientes partes?

  • SomethingService: Ok, esto es algo para gestionar los datos
  • SomethingView: Ok, esto es lo que se muestra
  • SomethingPresentationModel: Ok, esto contiene datos y comandos para el fin de obligar a (equivalente a un modelo de vista)
  • SomethingPresenter: Yo realmente no entiendo es el uso
  • SomethingController: no entiendo demasiado

vi que un presentador y un controlador no son necesarios, pero me gustaría entender por qué están aquí . ¿Alguien puede decirme su función y cuando para usarlos?

+1

Estoy de acuerdo, las cosas un desastre maldita confuso. – Pierreten

Respuesta

7

Tuve exactly the same problem cuando pasé por Prism por primera vez.

Controllers son básicamente para lógica que abarca un módulo completo, mientras que Presenters son para lógica que es específica de View.

Por ejemplo, un Presenter respondería a un comando que da como resultado que se desactive un botón en la vista. Un Controller respondería a un comando que da como resultado que el View (y Presenter) se cambie por completo, o que se cargue una vista/presentador diferente en una región diferente en el shell del módulo.

Editar: En cuanto a cuándo usarlos, puede omitir el Controller por completo si no necesita la orquestación mencionada anteriormente. La aplicación más sencilla sólo tendrá una:

  • Module: registra la vista/presentador en el Region
  • Presenter: responde a los comandos de la vista y modifica el ViewModel.
  • ViewModel: adaptador entre Presenter y View que implementa INotifyPropertyChanged
  • View: se une a ViewModel y muestra la interfaz de usuario

Editar: En cuanto a Presentador vs modelo de vista, la mayor parte de su lógica debe estar en su presentador. Considere que su ViewModel contiene la lógica para su vista, pero el Presentador tiene que ver con las consecuencias de interactuar con la vista.

Por ejemplo, el usuario hace clic en el botón "Buscar" en su View. Esto desencadena un ICommand, que es manejado por su Presenter.El Presenter comienza la búsqueda y establece la propiedad ViewModel.IsSearching, que activa la notificación PropertyChanged para CanSearch. CanSearch es una propiedad de solo lectura que se basa en varias otras propiedades (por ejemplo, IsSearchEnabled && !IsSearching). El botón "Buscar" en el View tiene su propiedad Enabled vinculada a CanSearch.

+0

Ah, entonces es solo una separación entre lo que sucede en la vista actual (Presentador) y lo que sucede en el módulo (Controlador). De hecho, hago todas las cosas lógicas en el ViewModel. ¿Esto está mal o es solo una elección estratégica? – SandRock

+0

'Prism' es solo una recomendación. Una vez dicho esto, actualicé mi respuesta con información de VM vs Presenter. –

+0

Genial, todo está claro en mi cabeza. Voy a intentar esto ahora. Gracias por su tiempo :) – SandRock

0

En mi opinión Controlador aquí se refiere a Application Controller

+0

Esto es válido para Prism si solo hay un Módulo. –

Cuestiones relacionadas