C# 创建作为当前页面子集的新WPF页面

C# 创建作为当前页面子集的新WPF页面,c#,.net,wpf,C#,.net,Wpf,我正在创建一个类似于“Windows向导”的WPF应用程序,当我按下main窗口中的按钮时,它应该导航到说Page2 对于Page2我从VisualStudio添加了一个新的WPF页面。由于大多数属性都相同,这个新页面是否可以从主窗口继承一些属性,如背景、维度、标题等。您可以使用ResourceDictionary来处理颜色属性等内容 <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presen

我正在创建一个类似于“Windows向导”的WPF应用程序,当我按下main窗口中的按钮时,它应该导航到说Page2


对于Page2我从VisualStudio添加了一个新的WPF页面。
由于大多数属性都相同,这个新页面是否可以从主窗口继承一些属性,如背景、维度、标题等。

您可以使用ResourceDictionary来处理颜色属性等内容

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <Color x:Key="LimeColor">#FFA4C400</Color>
    <SolidColorBrush Color="{StaticResource LimeColor}" x:Key="Lime" />
</ResourceDictionary>

#FFA4C400
App.xaml

<Application.Resources>
    <ResourceDictionary Source="pack://application:,,,/YourDictionary.xaml" /> 
</Application.Resources>

页面和窗口 例如:

<Grid Background="{StaticResource Lime}">

也可以在WPF中为任何控件类型定义样式和模板


有关更多信息:

您可以使用资源字典提供一种窗口样式。在一个窗口中,当用户导航时,可能会加载/交换多个
UserControl
s。通过这种方式,您可以拥有标准的前进/后退按钮,并且您可以为每个子窗口创建一个界面,该界面提供了决定前进/后退是否可用的逻辑等。通过这种方式,您的窗口不会改变,您只需要创建一个“向导”window@Charleh我该怎么做呢。我在VS2013中使用designer来创建GUI,所有页面上的元素在designer上不都显示重叠。我会使用MVVM框架来实现它,但您只需要一个带有占位符区域的窗口。然后为每个“页面”创建一个
UserControl
。加载窗口时,创建第一个
UserControl
的实例,并将其放置在窗口的占位符中。下一个/上一个等的按钮可以在窗口上显示,但每个页面的内容都位于
用户控件中
使管理窗口之间的转换更容易+确保所有“部分”都是分开的。我会考虑查看MVVM框架,但是如果您对WPF很认真,除非它是一个非常简单的Apple控件,它可以实现一个<代码> IPageableWizard < /C>接口,或者类似于“代码> CANMOVENEXEX/CODEC>”这样的属性。
CanMovePrev
和方法或事件,例如
MoveNext
/
onmoveext
MovePrev
/
OnMovePrev
在转换期间处理状态。窗口或某种控制器将负责加载/卸载/更改窗口,使用界面查询每个页面,以确定是否允许/发生转换。这使得添加新页面变得更加容易,因为您的基本“框架”就在那里,您只需将其挂接即可