理解 UWP 视图的概念,让 UWP 应用显示多个窗口(多视图) 发布于 2018-07-27 01:19...在 CoreApplication/Application、CoreWindow/Window 之间的区别 一文中,我描述了 UWP 视图的一些概念: CoreApplication 管理一个 UWP...应用中的所有视图(View),而 CoreApplication 直接管理的视图是 CoreApplicationView;也就是说,UWP 应用 CoreApplication 管理所有的应用视图...在 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序 一文中,我们也能体会到 CoreApplication 和 CoreWindow 之间的关系,了解消息循环在应用中的作用。 ?...管理多个 UWP 视图 我们平时开发 UWP 应用的时候很少去关心 CoreApplicationView,因为默认情况下 UWP 能为我们做很多管理应用视图的工作。
导航视图NavigationView 很多App都有个人中心的侧滑菜单,通常在页面左侧边缘右拉时,即可弹出个人中心的菜单页面。...有关DrawerLayout的详细说明参见《Android开发笔记(一百二十)两种侧滑布局》,这里就不再赘述了,接下来要介绍的是Android自带的导航视图NavigationView,它是一个侧滑菜单控件...总结一下,要想正常使用导航视图NavigationView,App需要增加三个库的引用,分别是design库、appcompat-v7库和recyclerview-v7库。...还提供了以下方法,用于在代码中操作导航视图: addHeaderView : 添加头部视图。...如果想让菜单图标显示原来的面貌,可在代码中调用setItemIconTintList方法,将图标色彩设置为null。下面是显示原始菜单图标颜色的导航页面截图。 ?
响应式布局的概念是一个页面适配多个终端及不同分辨率。在针对特定屏幕宽度优化应用 UI 时,我们将此称为创建响应式设计。...响应式设计技术 微软的官方文档介绍了UWP中响应式设计常用的6个技术,包括重新定位、调整大小、重新排列、显示/隐藏、替换和重新构建,具体可见以下网站: ?...使用AdaptiveTrigger可以做到前一节中提到的UWP中响应式设计常用的6个技术,除了UWP自带的AdaptiveTrigger,也可以自定义StateTriggerBase,这将在下一篇文章中介绍...NavigationView UWP中部分控件已经实现了响应式行为, 最典型的就是NavigationView。可以使用 PaneDisplayMode 属性配置不同的导航样式或显示模式。...Microsoft Docs 导航视图 - UWP apps Microsoft Docs AdaptiveTrigger Class (Windows.UI.Xaml) - Windows UWP
微软推荐在以下场景使用 Navigation View: 存在同一类型多个顶级导航元素,例如一个体育类 App 中包含不同的体育项目 5-10 个顶级导航分类的场景 提供一个易用的导航体验,容器中仅包含导航元素...,不包含任何操作 在小窗口时保留屏幕真实的观感 如果想了解更多关于导航的模式和基础概念,可以看这里:Navigation design basics for UWP apps NavigationView...UWP Console App 可以访问应用所在目录和所有子目录,因为它的模板中在 manifest 中添加了 AppExecutionAlias 的扩展,这种扩展让用户可以在控制台中输入缩写来启动应用...同时 UWP Console App 也支持多实例运行,因为它的模板中在 manifest 中添加了 SupportsMultipleInstances 能力。...官方提出的几个 UWP Console App 的注意事项: 只能使用 C++ /WinRT 或 CX /UWP 来开发 目标必须是 桌面或 IoT 项目类型 应用中不能创建窗体,所以 MessageBox
" 和 "@menu/drawer_view" 两个文件,第一个是主活动布局,第二个是侧拉框栏目,现在给出他们的实现,首先是主活动(我这里给空的,你们根据自己需要添加控件): 然后是侧拉框的栏目:...extends AppCompatActivity { private NavigationView navigationView; private Map navigationMap...= (NavigationView) findViewById(R.id.nav_view); View header = navigationView.inflateHeaderView...menuItem) { updatePosition(menuItem); return true;...} }); } private void updatePosition(final MenuItem menuItem) { runnable
= (NavigationView)findViewById(R.id.id_navigationview); ActionBarDrawerToggle mActionBarDrawerToggle...() { @Override public boolean onNavigationItemSelected(MenuItem menuItem) {...viewPager.setOffscreenPageLimit(5); // 给ViewPager添加页面动态监听器(为了让Toolbar中的Title可以变化相应的Tab...显示ViewPager的适配器中的getPageTitle函数获取到的标题 tabLayout.setTabsFromPagerAdapter(mViewPagerAdapter); RefreshLayout...-- 使用RecyclerView需要在build.gradle中添加 compile 'com.android.support:recyclerview-v7
打造您的首个 app bundle | MAD Skills 今天为大家发布本系列文章中的第一篇。...只要目的页面的 id 和 MenuItem 的 id 相匹配,该函数会导航到绑定在 MenuItem 上的目的页面。...比如,当您在最顶层的目的页面时,就不会显示回退按钮,因为没有更高层级的页面。 默认情况下,您应用的最初页面是唯一的最顶层目的页面,但是您也可以定义多个最顶层目的页面。...我需要添加 NavigationView,并且将 nav_drawer_menu 设置为 NavigationView 的 menu 属性。...为了使代码保持整洁、各个元素之间更加清晰,我们会在新的方法中实现相关操作,并且在 onCreate() 中调用该方法。
侧滑菜单的实现方式有许多种,之前有写过一篇SlidingMenu的使用,这次决定记录下DrawerLayout+NavigationView来实现的过程 这里说一下DrawerLayout之前是放在android.support.v4....widget包下的,不过AS3.5以后google整合了这些包到androidx中,于是这次我用的包为androidx.drawerlayout.widget.DrawerLayout。...DrawerLayout下包裹两个控件 第一个是内容控件 第二个是侧滑控件 addDrawerListener用来设置侧滑事件 NavigationView随着版本更新这里也变成了com.google.android.material.navigation.NavigationView...headerLayout设置侧滑布局的头部 menu设置侧滑布局头部下的条目 layout_gravity设置滑出方向,start为从左侧划出,end为右侧 头部监听使用designNavigationView.getHeaderView...() { @Override public boolean onNavigationItemSelected(@NonNull MenuItem menuItem
当然,XAML 条件编译还是带来了不少方便的特性呢,阅读 win10 uwp xaml 兼容多个版本条件编译 - 林德熙 可以了解 XAML 条件编译的使用方法,顺便收获一只猫。...使用此包,你需要将 UWP 的 目标版本设为 17134,支持的 最低版本只能到 14393,不能更低。..." 这样才能在 XAML 中使用 Microsoft.UI.Xaml 库中的新控件: NavigationView x:Name="WalterlvDemoView...> NavigationView> 还记得本文开头那张 Visual Studio 的兼容性提示图片吗?...当然除了在 XAML 中,也可以在 C# 代码中使用库中的新 API。 解决意料之外的错误 一切可以那么顺利?
简单来说Acrylic只是一个Brush,UWP提供了一组Acrylic Brush给开发者使用,通过ThemeResource找到资源名字中包含“Acrylic”的Brush即可轻松在应用中使用Acrylic...2.4 Motion UWP控件自带的动画已经不少,Connected animations则更进一步。Connected animations通常用于在导航中引导视觉,定位操作对象。 ?...但我觉得重申这个主题十分重要,UWP诞生的目的就是为了打造能在各种设备上运行的通用应用,伸缩性对UWP至关重要。即使只针对桌面设备,能有各种输入方式对可用性都有很大提高。...3.1 使用NavigationView更新导航菜单 以前很多教程都专门讲解了怎么制作汉堡包菜单,现在UWP终于提供了默认方案。...NavigationView是Fall Creators Update提供的新导航菜单,它应用了FDS最常用的两个特效:Acrylic和Reveal,可以折叠及最小化,使用简单: NavigationView
HomeFragment,把AS切换成design视图, ?...NavigationUI.setupActionBarWithNavController(this, navController, appBarConfiguration); //关联NavigationView...ActionBarOnDestinationChangedListener(activity, configuration)); } 然后NavigationUI.setupWithNavController关联了NavigationView...(MenuItem item,NavController navController) { //导航 navController.navigate(item.getItemId(), null...navigator.navigate(node, finalArgs, navOptions, navigatorExtras); } 点进navigator.navigate,会发现有多个实现类
: NavigationView.gif 目录中想要加分割线的话,可以在menu.xml中添加group节点 NavigationView会默认的给目录下的每个item的icon设置成灰色,如果我们想要原始图的颜色,需要在代码中调用 nv_slide.setItemIconTintList(null); NavigationView.gif...接下来分析NavigationView的源码,它采用了MVP设计模式,写的非常好,首先看它的构造方法 private final NavigationMenu mMenu; private...MenuItemImpl item = mMenu.getVisibleItems().get(i);将数据从mMenu(Model层)中取出,放到了mItems集合中,就是我们常用的RecyclerView...的套路,到此我们对NavigationView的布局结构就很清晰了,如下图: NavigationView布局结构.png NavigationView类结构图.png
现在开发中,很多APP都在用侧滑菜单,这个很常见,也有很多第三方库,比如slidingmenu,谷歌官方的DrawerLayout等等。...Google自带的DrawerLayout + NavigationView 这个就很简单了,DrawerLayout 结合NavigationView 很轻易实现这个效果。...NavigationView演示.gif 请看代码,具体的我也不多说了: import android.os.Bundle; import android.support.design.widget.NavigationView...android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; import android.view.MenuItem...SuppressWarnings("StatementWithEmptyBody") @Override public boolean onNavigationItemSelected(MenuItem
原因:这个滚动条不在NavigationView中,而是在他的child—NavigationMenuView中,所以解决办法就是对NavigationView调用 下面这个方法: private void...disableNavigationViewScrollbars(NavigationView navigationView) { if (navigationView !...= null) { NavigationMenuView navigationMenuView = (NavigationMenuView) navigationView.getChildAt
没错,就是我们在xml布局中设置的那一个。...view.getParent() : view; Navigation.setViewNavController(rootView, mNavController); } 在视图创建的时候调用了...不管是NavigationView还是Bottom``NavigationView,都会调用这个方法,他是AppCompatActivity的一个扩展方法,调用的是NavigationUI这个类: public...中的每个fragment的相关信息: 在初始化的时候通过addDestination()放到数组mNodes中,而mId则就是我们的MenuItem的ID,所以很清楚了吧。...到这里基本的代码实现已经了解的差不多了,然后我回到了入口,通过初始化NavController,调用NavigationUI中的方法绑定NavigationView、ToolBar、BottomNavigationView
没错,就是我们在xml布局中设置的那一个。...view.getParent() : view; Navigation.setViewNavController(rootView, mNavController); } 在视图创建的时候调用了...中的每个fragment的相关信息: ?...在初始化的时候通过addDestination()放到数组mNodes中,而mId则就是我们的MenuItem的ID,所以很清楚了吧。 4....到这里基本的代码实现已经了解的差不多了,然后我回到了入口,通过初始化NavController,调用NavigationUI中的方法绑定NavigationView、ToolBar、BottomNavigationView
2.2.1 menu是用来在NavigationView中显示具体的菜单项的; 为Menu resource file;...2.2.2 headerLayout则是用来在NavigationView中显示头部布局的。...menu是用来在NavigationView中显示具体的菜单项的; headerLayout则是用来在NavigationView中显示头部布局的。...表示组中的所有菜单项只能单选; 那么下面我们来看一下这些菜单项吧。...我们可以在这个方法中写相应的逻辑处理,不过这里并没有附加任何逻辑,只是调用了DrawerLayout的closeDrawers()方法将滑动菜单关闭,这也是合情合理的做法。
开始 1.新建project然后导入以下support:design library,BottomNavigationView就在这个design库中。...4.写完布局写代码,完整activity文件如下: 实例化控件后为NavigationView添加监听事件即可,代码如下: package com.fedming.bottomnavigationdemo...不知道细心的朋友是否可能发现了,上面的代码为什么用了反射呢? 原因就是官方的BottomNavigationView默认有个放大的ShiftingMode效果,但是尚未支持代码层级的切换。...public class BottomNavigationViewHelper { public static void disableShiftMode(BottomNavigationView navigationView...) { BottomNavigationMenuView menuView = (BottomNavigationMenuView) navigationView.getChildAt(
在 DataTemplate 绑定是使用次数很多的,下面我在使用新的控件 NavigationView 就需要绑定两个按钮。 先给大家看一下界面 ?...不要以为这个界面很复杂,实际上他需要的代码很少。...,请看 win10 uwp DataContext public MainPage() { this.InitializeComponent();...> NavigationView> 回到本文的问题,如何在 AppBarButton 点击绑定 ViewModel 的 Foo 函数。...但是如果在那些特殊的属性绑定,如一个列表,绑定了类型是 IText 的,也就是绑定的类型可能是有多种的。除了使用列表选择还可以使用下面的方法。 x:Bind xx.DataContext.
领取专属 10元无门槛券
手把手带您无忧上云