在WPF中单击按钮时显示用户控件(WPF)查看页面

时间:2016-07-21 06:29:08

标签: c# wpf xaml mvvm

此社区中有许多问题打开窗口只需点击一个按钮即可查看我们需要创建视图实例并使用.Show,并且有些问题是基于在窗口视图中使用用户控件

我遵循MVVM模式来创建WPF应用程序,在视图中我创建了一个名为SalesView.xaml的文件User Control(WPF)视图,默认情况下我从Dashboard.xaml设置了App.xaml {1}}这是Window View,项目结构是这样的:

Project Structure

我的要求是点击此按钮时Dashboard.xaml中有一个按钮我要打开SalesView.xaml User Control(WPF)视图而不是窗口视图。

1 个答案:

答案 0 :(得分:2)

您似乎需要一些简短的shell来托管您的用户控件。最简单的方法是将它们作为内容而不是之前的内容放在主窗口上。或者使用像Prism这样的框架。

通常我会怎么做,我会创建一个控制器/视图管理器的类。然后传入我的视图和vm,然后类将绑定它并将其放入托管窗口。

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