2016-07-21 142 views
2

有這個社會的許多問題打開一個按鈕的點擊窗口視圖只是我們需要創建視圖的實例,並使用.Show和點擊按鈕查看頁面有些問題是基於在Window View中使用用戶控制。顯示用戶控件(WPF)在WPF

我下面MVVM模式創建一個WPF應用程序,在視圖我創建了一個名爲SalesView.xaml文件,該文件是一個User Control(WPF)視圖和默認我設置爲從App.xaml這是窗口查看和項目結構的Dashboard.xaml一些事情像這樣:

Project Structure

我的要求是,我有這個按鈕,我想開一個SalesView.xaml這是一個User Control(WPF)視圖不是一個窗口視圖點擊在Dashboard.xaml按鈕。

回答

2

好像你需要一些短薄殼的託管用戶控件。最簡單的方法是將它們放在主窗口上作爲內容而不是先前的內容。或者使用一些框架,如Prism

通常我會怎麼做,我將創建一個類,它是控制器/視圖管理器。然後將它傳遞給我的視圖和虛擬機,然後這個類將綁定它並把它放到託管窗口中。

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(); 
    } 
} 

用法樣品:

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