【问题标题】:Create new WPF page which is subset of current page创建作为当前页面子集的新 WPF 页面
【发布时间】:2014-07-21 22:30:02
【问题描述】:

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

对于 Page2,我从 VisualStudio 添加了一个新的 WPF 页面。
这个新页面有什么方法可以从主窗口继承一些属性,例如背景、尺寸、标题等,因为大多数的属性相同。

【问题讨论】:

  • 您可以使用资源字典给窗口样式
  • 我可能有一个窗口,当用户导航时,多个UserControls 被加载/交换。这样您就可以拥有标准的前进/后退按钮,并且您可以为每个子窗口创建一个界面,该界面提供逻辑来决定前进/后退是否可用等。这样您的窗口不会改变,您只需要创建一个单个“向导”窗口
  • @Charleh 我该怎么做。我在VS2013中使用设计器创建GUI,不是所有页面上的元素都显示在设计器上重叠。
  • 我会为它使用一个 MVVM 框架——但你只需要一个带有占位符区域的窗口。然后为每个“页面”创建一个UserControl。当窗口加载时,您创建第一个UserControl 的实例并将其放入窗口中的占位符中。下一个/上一个等按钮可以位于窗口上,但每个页面的内容位于 UserControl 内,从而更容易管理窗口之间的转换 + 确保所有“部分”都是独立的。如果您对 WPF 很认真,我会考虑查看 MVVM 框架,除非它是一个非常简单的应用程序
  • 每个 UserControl 都可以实现一个IPageableWizard 接口或类似的东西,具有诸如CanMoveNextCanMovePrev 之类的属性以及诸如MoveNext/OnMoveNextMovePrev 之类的方法或事件/OnMovePrev 在转换期间处理状态。窗口或某种控制器将负责加载/卸载/更改窗口,使用接口查询每个页面以确定是否允许/发生转换。这使得添加新页面变得更加容易,因为你的基本“框架”就在那里,你只需加入它

标签: c# .net wpf


【解决方案1】:

您可以将 ResourceDictionaries 用于颜色属性等内容。

<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>

App.xaml

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

有关正确的来源,请参阅:Pack URIs in WPF

页面和窗口 例如:

<Grid Background="{StaticResource Lime}">

或者您可以在 WPF 中为任何 ControlType 定义样式和模板。

更多信息:Control Customization on MSDN

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-26
    • 1970-01-01
    • 1970-01-01
    • 2015-09-05
    • 1970-01-01
    • 2018-09-15
    • 1970-01-01
    • 2020-04-03
    相关资源
    最近更新 更多