c# - 单击 WPF 中的按钮显示用户控件 (WPF) 查看页面

标签 c# wpf xaml mvvm

这个社区中有很多关于单击按钮打开窗口 View 的问题,只是我们需要创建 View 的实例并使用 .Show ,有些问题是基于使用 User在窗口 View 中进行控制。

我按照 MVVM 模式创建一个 WPF 应用程序,在 View 中我创建了一个名为 SalesView.xaml 的文件,它是一个 User Control(WPF) View ,并通过默认情况下,我从 App.xaml (窗口 View )设置 Dashboard.xaml ,项目结构如下:

Project Structure

我的要求是我在 Dashboard.xaml 中有一个按钮,单击此按钮我想打开一个 SalesView.xaml 这是一个用户控件(WPF) View 不是窗口 View 。

最佳答案

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

通常情况下,我会创建一个 Controller / View 管理器类。然后将我的 View 和虚拟机传递给它,然后该类将其绑定(bind)并将其放入托管窗口中。

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

关于c# - 单击 WPF 中的按钮显示用户控件 (WPF) 查看页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38496528/

相关文章:

c# - 轮毂部分全宽

android - 在 Xamarin.Forms android 中使用正确屏幕高度和宽度的全局解决方案?

c# - double 到字符串转换(工程格式)

c# - 进程间通信

wpf - 在代码隐藏(WPF)中使用附加属性进行控制

asp.net - WPF 开发比经典 ASP.NET(Web 表单)更快还是更慢

silverlight - 为 Dots and Boxes 游戏绘制网格的最佳方法是什么? (银光)

c# - 将相同的属性提取到 WPF XAML 中的样式

c# - parse() 处的 JsonReaderException - HololensDeploy

c# - 命名空间中不存在自定义控件?