首页 > 其他分享 >WPF 中 NavigationWindow 与 Page 的继承关系解析

WPF 中 NavigationWindow 与 Page 的继承关系解析

时间:2024-11-07 20:44:34浏览次数:6  
标签:控件 NavigationWindow CountPage BaseWindow WPF Page 页面

官网解析: NavigationWindow 类     |     Page 类

public class BaseWindow: NavigationWindow{}
public partial class CountPage : Page{}
都是创建的WPF界面有什么区别?

在 WPF(Windows Presentation Foundation)开发中,我们经常需要设计具有多个页面的应用程序。在这种情况下,NavigationWindow 和 Page 是两个常用的控件,它们各自扮演不同的角色,但常常被一起使用。本文将详细解释为什么在 WPF 中会有 NavigationWindow 继承自 BaseWindow,以及 Page 继承自 CountPage 的设计模式。

1. 什么是 NavigationWindow 和 Page?

在 WPF 中,NavigationWindow 和 Page 都是与页面导航相关的重要控件,但它们的功能和使用场景有所不同。

NavigationWindow:继承自Window,是一种特殊的窗口控件,它支持页面间的导航功能,允许用户在不同页面之间切换。NavigationWindow内建了页面导航功能,支持历史记录、前进、后退等操作。

Page:是一个轻量级的控件,主要用来承载单一的页面内容。Page 是一个显示内容的容器,通常嵌入到如 NavigationWindow 或Frame 等控件中,以提供页面显示的功能。

2. BaseWindow 继承 NavigationWindow 的原因

通常我们会创建一个自定义窗口类 BaseWindow,它继承自 NavigationWindow,用于管理页面的导航。在 WPF 应用程序中,窗口(Window)通常是整个界面的容器,而 NavigationWindow 作为一种特殊类型的窗口,提供了更强大的页面导航能力。

页面导航功能:NavigationWindow 提供了类似浏览器的页面导航功能,允许用户在不同页面之间切换,并且可以支持前进和后退操作。
历史记录支持:NavigationWindow 内置了页面历史记录,允许用户通过 GoBack 和 GoForward 方法进行页面跳转。
适合多页面应用:当应用程序中包含多个 Page 时,使用 NavigationWindow作为窗口容器,可以帮助开发者轻松管理页面之间的切换,而不需要手动处理复杂的逻辑。

因此,BaseWindow 继承 NavigationWindow 是为了利用这个控件的导航功能,使得应用能够在多个页面之间进行流畅的切换。

3. 总结:为什么继承不同的基类

BaseWindow : NavigationWindow: NavigationWindow 是 WPF中用于承载页面的窗口控件,它提供了管理页面之间导航的功能。在这个场景中,BaseWindow是一个窗口,它的任务是显示不同的页面,并提供导航历史、前进后退等功能。
CountPage : Page: Page是一个用于显示具体界面的控件,它专注于单一的页面显示内容,而不负责窗口或导航管理。CountPage是一个页面,用来显示应用的某个部分或界面。

它们的继承关系反映了它们在 WPF 中不同的角色和责任。BaseWindow 是一个窗口(导航容器),而 CountPage 是页面内容(视图)控件。NavigationWindow 控制页面导航,而 Page 只是具体的内容显示。

示例:如何结合使用

假设你有一个应用程序,它有多个页面,并且你想使用类似浏览器的页面导航。你可以这样组织代码:

// BaseWindow.xaml.cs
public class BaseWindow : NavigationWindow
{
    public BaseWindow()
    {
        InitializeComponent();
        // 设置初始页面
        this.Navigate(new CountPage());
    }
}
// CountPage.xaml.cs
public partial class CountPage : Page
{
    public CountPage()
    {
        InitializeComponent();
        // 页面内容初始化
    }
}

在这个例子中,BaseWindow 负责承载和管理页面导航,而 CountPage 只是一个显示内容的页面。

标签:控件,NavigationWindow,CountPage,BaseWindow,WPF,Page,页面
From: https://blog.csdn.net/liuchunyu0130/article/details/143506898

相关文章

  • WPF Menu控件 我也有个不能点菜的菜单
    WPFMenu控件我也有个不能点菜的菜单 Windows应用程序最常见的部分之一是菜单,有时也称为主菜单,因为应用程序中通常只有一个。菜单很实用,因为它提供了很多选项,只占用很少的空间。向其中添加菜单项非常简单-您只需向其中添加MenuItem元素,并且每个MenuItem可以具有一系列......
  • WPF 4款 UI 库
    HandyControlPanuon.WPF.UIAduSkinLayui-WPF HandyControlHandyControl是一套WPF控件库,它几乎重写了所有原生样式,同时包含80余款自定义控件。使用HandyControl你可以轻松地创建一个美观的WPF应用程序,从而大大提高开发效率。官网对应模板或者控件的说明:https://handyorg......
  • 【WPF开发】HandyControl Growl控件Error通知不自动消失的问题
    Error类型的通知不自动消失,但是又需要他跟其他的统一。那么翻翻代码看看为啥不消失呗1、这是决定关闭通知的计时器2、这是通过_staysOpen来控制是否启动计时器_staysOpen为true的时候就会不启动了3、明显看到Error中如果非IsCustom的情况下会_staysOpen那么最后,我们可以......
  • 界面控件DevExpress WPF中文教程:Data Grid——卡片视图设置
    DevExpressWPF拥有120+个控件和库,将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpressWPF能创建有着强大互动功能的XAML基础应用程序,这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。无论是Office办公软件的衍伸产品,还是以数据为中心......
  • WPF Slider控件 划一划
    WPFSlider控件划一划 Slider控件就是常见的滑块。控件的外观一般显示一系列刻度,并存在一个可以拖动的滑块,可以通过拖动滑块来控制控件的值。如Windows11的音量控制。 做一个简单的滑块控件,并将滑块的值显示在文本框中。<StackPanelMargin="10"><!--一个......
  • WPF的入门学习
    环境的搭配我们通过VS的官网来安装的VS2022,安装上C#的功能,这样就完成了环境的搭配第一个wpf工程打开vs2022,点击如图的创建新的工程。点选WPF的项目配置一个新的项目这样就完成了项目的创建项目结构介绍一下大概的项目结构在APP.XAml文件中,设置我们的窗体入口界面......
  • 基于QT的桌面软件,就是要比winform、wpf体验好。
    QT具有跨平台性强、可定制程度高等优点,能在多种操作系统上运行,并且对于开发者来说提供了丰富的功能库。然而,WinForm开发相对简单快捷,适合快速构建小型应用。WPF则在界面设计和动画效果方面表现出色,能创造出非常美观的用户界面。不同的开发场景和需求会决定哪种技术更合适......
  • WPF RadioButton控件 一定要选一个
    WPFRadioButton控件一定要选一个RadioButton 控件用于提供多个选项供用户选择,其中只能选择一个。RadioButton 通常用于一组互斥的选项,如性别选择或支付方式选择,如判断题选择选项。<StackPanel><Label>请选择你的性别:</Label><Radi......
  • WPF Button控件 这里可以点一下
    WPFButton控件这里可以点一下 button表示一个Windows按钮控件,该控件对Click事件做出反应。可以点一下button,执行程序操作,如:显示对话框,更改显示内容。button的content属性表示按钮上显示的文字。<StackPanel><!--一个按钮控件,太小了,根本就看不到-->......
  • WPF TextBlock控件 显示两段文字
    WPFTextBlock控件显示两段文字TextBlock控件不止显示两段文字,可显示多行。<StackPanel><!--显示多行,LineBreak表示换行--><TextBlock>盼望着,<LineBreak/>盼望着,<LineBreak/>东风来了,春天的脚步近了。......