Ho Button e ho associato questo pulsante al comando in ViewModel, ad esempio OpenWindowCommand. Quando clicco sul pulsante voglio aprire una nuova finestra. Ma la creazione di un'istanza di finestra e la visualizzazione di una finestra dal modello di visualizzazione sono una violazione di MVVM. Ho creato l'interfaccia comeApertura di una nuova finestra in MVVM WPF
interface IWindowService
{
void showWindow(object dataContext);
}
e WindowService implementa questa interfaccia come
class WindowService:IWindowService
{
public void showWindow(object dataContext)
{
ChildWindow window=new ChildWindow();
window.DataContext=dataContext;
window.Show();
}
}
In questa classe ho specificato childWindow. Quindi questa classe è strettamente accoppiata a mostrare ChildWindow. Quando voglio mostrare un'altra finestra, devo implementare un'altra classe con la stessa interfaccia e logica. Come posso rendere questa classe generica in modo che possa passare solo l'istanza di qualsiasi finestra e la classe sarà in grado di aprire qualsiasi finestra? Non sto usando alcun framework MVVM. Ho letto molti articoli su StackOverflow ma non ho trovato alcuna soluzione per questo.
Ho trovato un [modo alternativo] (http://stackoverflow.com/a/15512972/385995) di finestre di apertura in MVVM, utilizzando un comportamento anziché un servizio. –