WPF:共享相同代码隐藏文件的多个 XAML 文件
WPF: Multiple XAML files that share the same code behind file
我想创建一个应用程序,用户可以在其中浏览放置在框架元素内的页面。问题是一个页面可以有不同的布局,但基本上提供相同的功能。每个布局或多或少可以有几个按钮或输入控件,但它们都应该在文件后共享相同的代码。
在 Windows 表单中,我曾经将所有元素(布局)放在同一个表单上,然后 hide/show 我需要的控件,但这是一个非常丑陋的解决方案,我希望WPF 在这里提供了一些更方便的东西。
我尝试创建 2 个页面,删除了它们各自的 .cs 文件并将它们的 "x:Class" 属性设置为自定义 .cs 文件,但这会导致编译器错误(对 InitializeComponent() 的调用不明确)。
那么我可以有多个共享相同代码的页面吗?
您应该将逻辑从代码隐藏 class 移至视图模型 class。此模式称为模型-视图-视图模型,是 推荐的设计模式,可在开发基于 XAML 的用户界面应用程序时使用。
有很多关于它的在线教程,这个应该为您提供一个很好的起点:https://msdn.microsoft.com/en-us/library/hh848246.aspx。
一旦您理解了模式并在视图模型中实现了您的应用程序逻辑 class,您就可以简单地将两个页面的 DataContext
属性 设置为相同的视图模型:
public Page1()
{
InitializeComponent();
DataContext = new ViewModel();
}
代码隐藏 class 只是部分 class,即它是您在 XAML 中定义的 Page
的部分定义,因此您不能 "share"这个在几个不同的页面之间。
部分 classes 只是将 class 的定义拆分到几个不同的源文件中的一种方式:https://docs.microsoft.com/en-us/dotnet/articles/csharp/programming-guide/classes-and-structs/partial-classes-and-methods.
我想创建一个应用程序,用户可以在其中浏览放置在框架元素内的页面。问题是一个页面可以有不同的布局,但基本上提供相同的功能。每个布局或多或少可以有几个按钮或输入控件,但它们都应该在文件后共享相同的代码。
在 Windows 表单中,我曾经将所有元素(布局)放在同一个表单上,然后 hide/show 我需要的控件,但这是一个非常丑陋的解决方案,我希望WPF 在这里提供了一些更方便的东西。
我尝试创建 2 个页面,删除了它们各自的 .cs 文件并将它们的 "x:Class" 属性设置为自定义 .cs 文件,但这会导致编译器错误(对 InitializeComponent() 的调用不明确)。
那么我可以有多个共享相同代码的页面吗?
您应该将逻辑从代码隐藏 class 移至视图模型 class。此模式称为模型-视图-视图模型,是 推荐的设计模式,可在开发基于 XAML 的用户界面应用程序时使用。
有很多关于它的在线教程,这个应该为您提供一个很好的起点:https://msdn.microsoft.com/en-us/library/hh848246.aspx。
一旦您理解了模式并在视图模型中实现了您的应用程序逻辑 class,您就可以简单地将两个页面的 DataContext
属性 设置为相同的视图模型:
public Page1()
{
InitializeComponent();
DataContext = new ViewModel();
}
代码隐藏 class 只是部分 class,即它是您在 XAML 中定义的 Page
的部分定义,因此您不能 "share"这个在几个不同的页面之间。
部分 classes 只是将 class 的定义拆分到几个不同的源文件中的一种方式:https://docs.microsoft.com/en-us/dotnet/articles/csharp/programming-guide/classes-and-structs/partial-classes-and-methods.