2016-07-21 98 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());