2011-10-20 26 views
8

Mi piacerebbe sapere quando si utilizza Prisma, è preferibile utilizzare gli oggetti di richiesta di interazione per utilizzare il modello di servizio di interazione. Per quanto mi riguarda, il servizio di interazione deve essere utilizzato in casi semplici, ad esempio quando si ha un popup di messaggio standard e solo il contenuto del testo verrà modificato. D'altra parte, gli oggetti di richiesta di interazione sono più adatti quando l'interfaccia utente è più complicata. Ma il servizio di interazione è molto più facile da implementare e richiede meno codice. Cosa ne pensi?Servizio di interazione contro oggetti di richiesta di interazione

+0

Ho la stessa domanda. Chiunque ... – dFlat

risposta

1

Sono d'accordo con te che un servizio di interazione può essere adatto per comportamento comune interazione come MessageBox ecc

A mio parere, si riduce alla classe responsabilità. In altre parole, vuoi che ViewModel o View siano responsabili della specifica del tipo di interazione che dovrebbe avvenire?

consideri una base un'interfaccia Interaction Servizio:

public interface IInteractionService{ 
    MessageBoxResult ShowMessageBox(string messageBoxText, string caption, MessageBoxButton button); 
} 

E 'abbastanza evidente osservando l'interfaccia che tipo di comportamento ShowMessageBox sta per produrre. Ciò conferisce al ViewModel un certo grado di controllo in termini di specificare quale tipo di comportamento di interazione si aspetta che si verifichi. Il problema con questo approccio è che ViewModel ora ha una dipendenza da IInteractionService oltre ad essere esplicito nelle sue aspettative di comportamento di interazione. Questo potrebbe rendere il tuo ViewModel meno riutilizzabile.

Con gli oggetti di interazione, è possibile inserire una maggiore responsabilità del comportamento di interazione sulla vista. In altre parole, è possibile modificare il comportamento e l'aspetto dell'interazione senza influire direttamente su ViewModel. Ad esempio, V1 della richiesta di interazione potrebbe visualizzare un MessageBox semplice. Il V2 della richiesta di interazione potrebbe essere una finestra di dialogo più complessa che richiede più interazione da parte dell'utente con un semplice clic del pulsante. Questo tipo di cambiamento del comportamento di interazione può essere gestito senza richiedere la modifica del ViewModel. Questo può essere utile se hai un designer dell'interfaccia utente che lavora al progetto che vuole l'opzione di scambiare o modificare il comportamento o l'aspetto di una vista legata a una richiesta di interazione.

Se si desidera, è possibile utilizzare entrambe le strategie. In altre parole, un servizio di interazione per comportamenti di interazione comuni e oggetti di interazione per un comportamento più complesso.

Per riepilogare, i servizi di interazione possono essere più facili da usare ma gli oggetti di interazione possono rendere i vostri ViewModel più riutilizzabili, a mio parere.

2

L'enorme inconveniente di utilizzare un servizio di interazione per visualizzare una finestra di messaggio è la finestra principale - o piuttosto la mancanza di uno.

Quale finestra si deve fornire come genitore della finestra di messaggio, dal modello di vista o dall'implementazione del servizio? Se scegli Application.Mainwindow, stai facendo una grande supposizione sul layout generale dell'applicazione.

L'unica entità nel processo che conosce come per visualizzare l'interazione è la vista. Indipendentemente dal fatto che utilizzi una finestra di messaggio o un overlay in-page.

Esistono pochi argomenti validi a favore dell'utilizzo di un servizio di interazione. Quello usato spesso è che è più facile. Questo può essere vero, ma è anche vero per molte altre cose che non dovrebbero essere fatte, ad es. codice dietro, ecc.

Problemi correlati