wpf ui 介绍

wpf ui 是一款我比较喜欢的wpf ui界面开源库,目前已经获得了8.5颗stars,还是很受欢迎的:

wpf ui在vs中也提供了快速开发模板:

让wpf开发者可以快速进行应用开发,已经设置好了模板。

但是我发现最新的模板的页面导航方式跟之前不一样了。

先看下wpf ui的迁移文档:

先简单翻译一下:

迁移计划

本页概述了迁移时需要考虑的关键变更和重要细节。它突出了新功能、已更改的内容以及确保顺利过渡所需的步骤。这不是一份完整的逐步指南,而是一个快速参考,帮助您导航迁移过程中最关键的部分。

抽象包

一些 WPF UI 接口已被移动到独立包 WPF-UI.Abstractions。您无需引用它,它将始终随 WPF-UI NuGet 包自动添加。

导航接口

导航接口已移至独立的 WPF-UI.Abstractions 包中。这样,如果你有与其他项目相关的模型、视图或其他业务服务,这些项目不涉及 WPF,你可以在多个应用程序中共同开发它们。

新命名空间

INavigationAware 和 INavigableView 已移动到 Wpf.Ui.Abstractions.Controls 命名空间。

基于依赖注入的页面创建

IPageService 已更名为 INavigationViewPageProvider。

其默认实现位于新的 Wpf.Ui.DependencyInjection 包中。您只需使用 services.AddNavigationViewPageProvider() 扩展方法,然后在导航中指定要使用此接口。然后 NavigationView 将使用 DI 容器进行页面创建。

导航服务

在主包(WPF-UI)中定义的INavigationService使得导航管理变得简单。您可以用它来方便地在视图模型之间进行注入。我们强烈建议将其设置为单例。

它是如何实现页面导航的?

来到App.xaml.cs:

与实现导航有关的三个地方。

运行程序,来到ApplicationHostService.cs:

首先从依赖注入容器中获取INavigationWindow实例。

转到INavigationWindow接口的定义:

定义了几个和导航有关的函数。

下一步在获取INavigationWindow的时候,会先实例化主窗体的ViewModel。

在这里会为NavigationView这个控件设置SetNavigationControl。

请注意这里的RootNavigation就是指在xaml中使用的那个NavigationView控件:

设置了NavigationView控件中的_pageService:

现在来到导航到主页:

再到:

中由于现在_pageService已经设置了,会调用它的GetPage方法:

来到:

来到:

进行内容控件的更新。

现在就来到了首页:

现在我点击Data就会触发NavigationViewItemClick事件:

又是刚刚那样来到NavigateInternal实现页面导航:

还是通过_pageService找到对应页面,然后进行控件内容更新。

然后就会跳转到新的页面:

C#:wpf ui 4.0 是如何实现页面导航的?的更多相关文章

  1. WPF如何实现一个漂亮的页签导航UI

    最近看到一个比较漂亮的UI主界面,该UI是用左边的页签进行导航,比较有特色,就想着尝试用WPF来实现一下.经过一番尝试,基本上将UI设计图的效果用WPF程序进行了实现.下面介绍一下主要的思路: 1 U ...

  2. 精通 WPF UI Virtualization (提升 OEA 框架中 TreeGrid 控件的性能)

    原文:精通 WPF UI Virtualization (提升 OEA 框架中 TreeGrid 控件的性能) 本篇博客主要说明如何使用 UI Virtualization(以下简称为 UIV) 来提 ...

  3. OpenExpressApp:精通 WPF UI Virtualization

    原文:OpenExpressApp:精通 WPF UI Virtualization 本篇博客主要说明如何使用 UI Virtualization(以下简称为 UIV) 来提升 OEA 框架中 Tre ...

  4. C#如何在VS2015 2017版本中编写WPF UI界面引入第三方SVG图形

    原文:C#如何在VS2015 2017版本中编写WPF UI界面引入第三方SVG图形 在VS2015 2017版本中编写WPF UI界面引入第三方SVG图形     最近在写WPF界面的时候遇到一个情 ...

  5. UI-WPF_UI:WPF UI - DMSkin官方网站

    ylbtech-UI-WPF_UI:WPF UI - DMSkin官方网站 1.返回顶部 1. QQ: 944095635 DMSkin.com 首页 论坛 定制 博客  联系   DMSkin 3. ...

  6. sencha touch在华为emotion ui 2.0自带浏览器中圆角溢出的bug

    在华为emotion ui 2.0自带的浏览器中,给部分组件设置了圆角后会发现背景仍然是方的,内部边框是圆的, 对于这种bug, 只需在对应的设置圆角的css样式中加入 background-clip ...

  7. 袋鼠云出品!数栈UI 5.0全新体验升级,设计背后的故事

    我们是袋鼠云数栈 UED 团队,致力于打造优秀的一站式数据中台产品.我们始终保持工匠精神,探索前端道路,为社区积累并传播经验价值. 前言 数栈作为云原⽣⼀站式⼤数据开发平台,从2016年发布第⼀个版本 ...

  8. 【Dotnet 工具箱】WPF UI - 现代化设计的开源 WPF 框架

    1.WPF UI - 现代化设计的开源 WPF 框架 WPF UI 是一个基于 C# 开发的, 拥有 4k star 的开源 UI 框架.WPF UI 在 WPF 的基础上,提供了更多的现代化,流利的 ...

  9. WPF的页面导航

    工作中之前接触过的WPF程序一直是使用TabControl作不同页面间的切换,每个Tab负责独立的功能,清晰简捷,所以一直就没有动力研究WPF自带的页面导航.(虽然接触过使用页面导航的WPF项目,也并 ...

  10. WPF MvvmLight简单实例(1) 页面导航

    原文:WPF MvvmLight简单实例(1) 页面导航 实现了那些功能,先看看截图: 操作描述: 在程序运行后,点击“Load”按钮,页面会加载PageOne,点击PageOne页面中的“Next” ...

随机推荐

  1. vue3第二次传递数据方法无法获取到最新的值

    使用reactive父组件第二次传递给子组件的数据:方法中可以获取到最新数据 <template> <div> <div> <h1>子组件</h1 ...

  2. 🎀chrome-网页gif截图插件

    简介 本文介绍网页中gif截图工具使用,便于日常对网页中动态效果或元素进行截图 软件介绍 Capture to a Gif 是用来录制屏幕并将其保存为 GIF 格式文件的chrome插件工具.它允许用 ...

  3. easy-query隐式Group革命性OLAP优化JAVA下最强查询ORM没有之一子查询合并

    easy-query JAVA下最强查询ORM没有之一的任意子查询合并革命性OLAP优化 前言 对于大部分OLTP而言的查询市面上常见的orm已经能很好的处理,只要建立好对象关系那么就可以非常简单的实 ...

  4. Git常用命令大全:git命令基本用法

    1. 常用的git命令 Git 常用的六个命令是什么? ·"git clone"克隆代码: ·"git log"查看日志: ·"git tag&quo ...

  5. 基于CARLA与PyTorch的自动驾驶仿真系统全栈开发指南

    引言:自动驾驶仿真的价值与技术栈选择 自动驾驶作为AI领域最具挑战性的研究方向之一,其开发流程需要经历"仿真测试-闭环验证-实车部署"的完整链路.其中,高保真仿真平台为算法迭代提供 ...

  6. bat文件简短

    bat文件 @echo off F: cd\pictures\projectStreet\FloatingShinyKnot-main node server.js cd\ bat静默运行(但会闪一下 ...

  7. Java编程--观察者(Observer)设计模式

    观察者设计模式 观察者设计模式是一种行为设计模式,允许对象在其状态改变时通知其他依赖对象.它创建了一种发布者(Subject)和订阅者(Observer)之间的依赖关系.这种模式经常用于实现事件处理系 ...

  8. 原生JS表格数据常用总结

    主要是在数据报表这块, 做了好几年发现, 其实用户最终想要看的并不是酷炫的BI大屏, 而是最基础也是最复杂的 中国式报表. 更多就是倾向于从表格中去获取数据信息, 最简单的就是最好的, 于是还是来总结 ...

  9. SQL 强化练习(三)

    继续来练习 sql 查询, 似乎也没有什么窍门, 跟着写多了, 自然就记住了, 这个帖子, 来记录一波, 模糊查询 like; 四表关联查询: 老师名 -> 老师id -> 课程id -. ...

  10. RNN - 梯度消失与爆炸

    Last we learned Recurrent Neural Netwoks (RNN) and why they'er great for Language Modeling (LM) 就之前整 ...