2016-07-21 9 views
2

Es gibt viele Fragen in dieser Community zum Öffnen des Fensters Ansicht Mit einem Klick auf eine Schaltfläche müssen wir nur die Instanz der Ansicht erstellen und .Show und verwenden Einige Fragen basieren auf der Verwendung der Benutzersteuerung in der Fensteransicht.Benutzersteuerelement anzeigen (WPF) Seite anzeigen beim Klicken auf eine Schaltfläche in WPF

Ich verfolge MVVM Muster eine WPF-Anwendung zu erstellen, in den Ansichten Ich habe eine Datei mit dem Namen SalesView.xaml, die eine User Control(WPF) Ansicht und Voreingestellt ich die Dashboard.xaml vom App.xaml die Fenster-Ansicht und die Projektstruktur ist ein Ding dies wie:

Project Structure

Meine Forderung ist, dass ich eine Schaltfläche in Dashboard.xaml auf Klick auf diese Schaltfläche, habe ich ein SalesView.xaml öffnen mag, das ist eine User Control(WPF) Ansicht kein Fenster anzeigen.

Antwort

2

Es scheint, als ob Sie etwas Shell für das Hosting Ihrer Benutzersteuerelemente benötigen. Der einfachste Weg besteht darin, das Hauptfenster als Inhalt und nicht als vorherigen Inhalt zu verwenden. Oder verwenden Sie ein Framework wie Prism.

Normalerweise, wie ich es tun würde, würde ich eine Klasse erstellen, die Controller/View Manager ist. Und dann gib mir meine Ansicht und vm, dann würde die Klasse es binden und es in das Hosting-Fenster setzen.

class ViewManager 
{ 
    public void ShowView<T>(object viewModel) where T: UserControl, new() 
    { 
     var view = T(); 
     var window = new Window(); // feel free to prelace this simple approach with hosting shell 
     view.DataContext = viewModel; 
     window.Content = view; 
     window.Show(); 
    } 
} 

Nutzungs Beispiel:

new ViewManager().ShowView<MyUserControl>(new MyViewModel());