原文:背水一战 Windows 10 (41) - 控件(导航类): Frame

[源码下载]

背水一战 Windows 10 (41) - 控件(导航类): Frame

作者:webabcd

介绍
背水一战 Windows 10 之 控件(导航类)

  • Frame

示例
Controls/NavigationControl/FrameDemo.xaml

<Pagex:Class="Windows10.Controls.NavigationControl.FrameDemo"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:local="using:Windows10.Controls.NavigationControl"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"mc:Ignorable="d"><Grid Background="Transparent"><StackPanel Margin="10 0 10 10" Orientation="Horizontal"><StackPanel Width="400"><Button Name="btnGotoFrame1" Content="导航至 Frame1" Click="btnGotoFrame1_Click" /><Button Name="btnGotoFrame2" Content="导航至 Frame2" Click="btnGotoFrame2_Click" Margin="0 10 0 0" /><Button Name="btnBack" Content="后退" Click="btnBack_Click" Margin="0 10 0 0" /><Button Name="btnForward" Content="前进" Click="btnForward_Click" Margin="0 10 0 0" /><TextBlock Name="lblMsg" TextWrapping="Wrap" Margin="0 10 0 0" /></StackPanel><Frame Name="frame" VerticalAlignment="Top" Margin="10 0 0 0"  /></StackPanel></Grid>
</Page>

Controls/NavigationControl/FrameDemo.xaml.cs

/** Frame - 框架控件,用于导航内容(继承自 ContentControl, 请参见 /Controls/BaseControl/ContentControlDemo/)*     BackStackDepth - 返回 stack 中的条目数*     BackStack - 返回向后导航历史记录的 PageStackEntry 实例的集合(可以根据需求对集合增删改查)*     ForwardStack - 返回向前导航历史记录的 PageStackEntry 实例的集合(可以根据需求对集合增删改查)*     CanGoBack - 可否可以向后导航*     CanGoForward - 可否可以向前导航*     GoBack() - 向后导航,可以指定过渡效果*     GoForward() - 向前导航*     Navigate() - 导航到指定的 Type,可以传递一个 object 类型的参数,可以指定过渡效果*     CurrentSourcePageType - 获取 Frame 当前内容的 Type*     SourcePageType - 获取或设置 Frame 当前内容的 Type* *     CacheSize - 所支持的最大缓存页数,默认值 10*         CacheSize 与被导航的页的 Page.NavigationCacheMode 属性相关(详见 Frame1.xaml.cs 和 Frame2.xaml.cs 的示例代码)*             NavigationCacheMode.Disabled - 每次导航到页时,都重新实例化此页,默认值(CacheSize 无效)*             NavigationCacheMode.Enabled - 每次导航到页时,首先缓存此页,此时如果已缓存的页数大于 CacheSize,则按先进先出的原则丢弃最早的缓存页(CacheSize 有效)*             NavigationCacheMode.Required - 每次导航到页时,都缓存此页(CacheSize 无效)* *     Navigating - 导航开始时触发的事件*     Navigated - 导航完成后触发的事件*     NavigationFailed - 导航失败时触发的事件*     NavigationStopped - 导航过程中,又请求了一个新的导航时触发的事件*     *     GetNavigationState() - 获取 Frame 当前的导航状态,返回字符串类型的数据,仅当导航无参数传递或只传递简单参数(int, char, string, guid, bool 等)时有效*     SetNavigationState(string navigationState) - 将 Frame 还原到指定的导航状态*     *     * PageStackEntry - 保存在 stack 中的页对象*      SourcePageType - 获取此页的类型*      Parameter - 获取之前导航至此页时的参数** * NavigationEventArgs - 导航的事件参数*     NavigationMode - 导航方式,只读(Windows.UI.Xaml.Navigation.NavigationMode 枚举)*         New, Back, Forward, Refresh*     Parameter - 传递给导航目标页的参数,只读*     SourcePageType - 导航的目标页的类型,只读*     *     * 注:* 1、关于导航过程中的过渡效果请参见 /Animation/ThemeTransition/NavigationTransitionInfo/ 中的内容* 2、Frame 中与过渡效果有关的是 GoBack() 和 Navigate() 中的 NavigationTransitionInfo 类型的参数*/using System;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Navigation;namespace Windows10.Controls.NavigationControl
{public sealed partial class FrameDemo : Page{public FrameDemo(){this.InitializeComponent();}protected override void OnNavigatedTo(NavigationEventArgs e){frame.Navigated += frame_Navigated;}void frame_Navigated(object sender, NavigationEventArgs e){lblMsg.Text = "CacheSize: " + frame.CacheSize;lblMsg.Text += Environment.NewLine;lblMsg.Text += "BackStackDepth: " + frame.BackStackDepth;lblMsg.Text += Environment.NewLine;lblMsg.Text += "CanGoBack: " + frame.CanGoBack;lblMsg.Text += Environment.NewLine;lblMsg.Text += "CanGoForward: " + frame.CanGoForward;lblMsg.Text += Environment.NewLine;lblMsg.Text += "CurrentSourcePageType: " + frame.CurrentSourcePageType;lblMsg.Text += Environment.NewLine;// 显示 frame 的当前的导航状态,记录此值后,可以在需要的时候通过 SetNavigationState() 将 frame 还原到指定的导航状态lblMsg.Text += "NavigationState: " + frame.GetNavigationState();}private void btnGotoFrame1_Click(object sender, RoutedEventArgs e){frame.Navigate(typeof(Frame1), "param1");}private void btnGotoFrame2_Click(object sender, RoutedEventArgs e){frame.SourcePageType = typeof(Frame2);}private void btnBack_Click(object sender, RoutedEventArgs e){if (frame.CanGoBack)frame.GoBack();}private void btnForward_Click(object sender, RoutedEventArgs e){if (frame.CanGoForward)frame.GoForward();}}
}

Controls/NavigationControl/Frame1.xaml

<Pagex:Class="Windows10.Controls.NavigationControl.Frame1"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:local="using:Windows10.Controls.NavigationControl"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"mc:Ignorable="d"><Grid Background="Transparent"><StackPanel Margin="10 0 10 10"><TextBlock Name="lblMsg" Margin="5" TextWrapping="Wrap" /></StackPanel></Grid>
</Page>

Controls/NavigationControl/Frame1.xaml.cs

using System;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Navigation;namespace Windows10.Controls.NavigationControl
{public sealed partial class Frame1 : Page{public Frame1(){this.InitializeComponent();/** Page.NavigationCacheMode - 使用 Frame 导航到此页面时,页面的缓存模式*     Disabled - 每次导航到页时,都重新实例化此页,默认值(Frame.CacheSize 无效)*     Enabled - 每次导航到页时,首先缓存此页,此时如果已缓存的页数大于 Frame.CacheSize,则按先进先出的原则丢弃最早的缓存页(Frame.CacheSize 有效)*     Required - 每次导航到页时,都缓存此页(Frame.CacheSize 无效)*/this.NavigationCacheMode = Windows.UI.Xaml.Navigation.NavigationCacheMode.Enabled;this.Loaded += Frame1_Loaded;}void Frame1_Loaded(object sender, Windows.UI.Xaml.RoutedEventArgs e){lblMsg.Text += Environment.NewLine;lblMsg.Text += "Loaded: " + DateTime.Now.ToString();}// 来了protected override void OnNavigatedTo(NavigationEventArgs e){lblMsg.Text += Environment.NewLine;lblMsg.Text += "OnNavigatedTo: " + DateTime.Now.ToString();lblMsg.Text += " param: " + (string)e.Parameter;}// 准备走了,但是可以取消protected override void OnNavigatingFrom(NavigatingCancelEventArgs e){lblMsg.Text += Environment.NewLine;lblMsg.Text += "OnNavigatingFrom(NavigatingCancelEventArgs): " + DateTime.Now.ToString();lblMsg.Text += " param: " + (string)e.Parameter;}// 已经走了protected override void OnNavigatedFrom(NavigationEventArgs e){lblMsg.Text += Environment.NewLine;lblMsg.Text += "OnNavigatedFrom(NavigationEventArgs): " + DateTime.Now.ToString();lblMsg.Text += " param: " + (string)e.Parameter;}}
}

Controls/NavigationControl/Frame2.xaml

<Pagex:Class="Windows10.Controls.NavigationControl.Frame2"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:local="using:Windows10.Controls.NavigationControl"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"mc:Ignorable="d"><Grid Background="Transparent"><StackPanel Margin="10 0 10 10"><TextBlock Name="lblMsg" Margin="5" TextWrapping="Wrap" /></StackPanel></Grid>
</Page>

Controls/NavigationControl/Frame2.xaml.cs

using System;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Navigation;namespace Windows10.Controls.NavigationControl
{public sealed partial class Frame2 : Page{public Frame2(){this.InitializeComponent();/** Page.NavigationCacheMode - 使用 Frame 导航到此页面时,页面的缓存模式*     Disabled - 每次导航到页时,都重新实例化此页,默认值(Frame.CacheSize 无效)*     Enabled - 每次导航到页时,首先缓存此页,此时如果已缓存的页数大于 Frame.CacheSize,则按先进先出的原则丢弃最早的缓存页(Frame.CacheSize 有效)*     Required - 每次导航到页时,都缓存此页(Frame.CacheSize 无效)*/this.NavigationCacheMode = Windows.UI.Xaml.Navigation.NavigationCacheMode.Enabled;this.Loaded += Frame2_Loaded;}void Frame2_Loaded(object sender, Windows.UI.Xaml.RoutedEventArgs e){lblMsg.Text += Environment.NewLine;lblMsg.Text += "Loaded: " + DateTime.Now.ToString();}protected override void OnNavigatedTo(NavigationEventArgs e){lblMsg.Text += Environment.NewLine;lblMsg.Text += "OnNavigatedTo: " + DateTime.Now.ToString();}}
}

OK
[源码下载]

背水一战 Windows 10 (41) - 控件(导航类): Frame相关推荐

  1. 背水一战 Windows 10 (40) - 控件(导航类): AppBar, CommandBar

    原文:背水一战 Windows 10 (40) - 控件(导航类): AppBar, CommandBar [源码下载] 背水一战 Windows 10 (40) - 控件(导航类): AppBar, ...

  2. 背水一战 Windows 10 (42) - 控件(导航类): Frame 动画

    原文:背水一战 Windows 10 (42) - 控件(导航类): Frame 动画 [源码下载] 背水一战 Windows 10 (42) - 控件(导航类): Frame 动画 作者:webab ...

  3. 背水一战 Windows 10 (61) - 控件(媒体类): InkCanvas 涂鸦编辑

    背水一战 Windows 10 (61) - 控件(媒体类): InkCanvas 涂鸦编辑 原文:背水一战 Windows 10 (61) - 控件(媒体类): InkCanvas 涂鸦编辑 [源码 ...

  4. 背水一战 Windows 10 (36) - 控件(弹出类): ToolTip, Popup, PopupMenu

    原文:背水一战 Windows 10 (36) - 控件(弹出类): ToolTip, Popup, PopupMenu [源码下载] 背水一战 Windows 10 (36) - 控件(弹出类): ...

  5. 背水一战 Windows 10 (30) - 控件(文本类): AutoSuggestBox

    背水一战 Windows 10 (30) - 控件(文本类): AutoSuggestBox 原文:背水一战 Windows 10 (30) - 控件(文本类): AutoSuggestBox [源码 ...

  6. 背水一战 Windows 10 (70) - 控件(控件基类): UIElement - Transform3D(3D变换), Projection(3D投影)...

    原文:背水一战 Windows 10 (70) - 控件(控件基类): UIElement - Transform3D(3D变换), Projection(3D投影) [源码下载] 背水一战 Wind ...

  7. 背水一战 Windows 10 (34) - 控件(进度类): RangeBase, Slider, ProgressBar, ProgressRing

    背水一战 Windows 10 (34) - 控件(进度类): RangeBase, Slider, ProgressBar, ProgressRing 原文:背水一战 Windows 10 (34) ...

  8. 背水一战 Windows 10 (38) - 控件(布局类): Panel, Canvas, RelativePanel, StackPanel, Grid

    原文: 背水一战 Windows 10 (38) - 控件(布局类): Panel, Canvas, RelativePanel, StackPanel, Grid [源码下载] 背水一战 Windo ...

  9. 背水一战 Windows 10 (55) - 控件(集合类): SemanticZoom, ISemanticZoomInformation

    原文:背水一战 Windows 10 (55) - 控件(集合类): SemanticZoom, ISemanticZoomInformation [源码下载] 背水一战 Windows 10 (55 ...

最新文章

  1. 函数调用和尾递归的一点认识
  2. 多路I/O转接服务器——epoll
  3. 解決“无法解决 equal to 操作的排序规则冲突 ”问题
  4. 我刚做的一个TreeView的CheckBox进行选中插入数据库,从数据库中读取数据后让CheckBox勾选的代码!...
  5. 干货!专治设计师没灵感没创意没素材
  6. 机器学习- 吴恩达Andrew Ng Week8 知识总结 Dimensionality Reduction
  7. K8S知道,K9S又是个什么鬼?
  8. 根据CTP接口计算现手、增仓、开平、对手盘 (1)
  9. 【汇编程序】实现输出2012-2100年之间所有闰年
  10. Navicat快捷键选择当前行
  11. Type 和 class 的区别
  12. 下载人人网相册的所有图片
  13. 如何提高系统稳定性?
  14. J-Link在keil软件找不到芯片 与 软件提示dll错误
  15. ubuntu中,出现Failed to fetch http://…..时,需要换源
  16. 【查询、注销名下的支付宝账号】
  17. DOM操作style属性
  18. 小玩意 - Chrome插件——GreenChrome(双击关闭标签,新窗口打开新地址)
  19. DVWA指点迷津-XSS(DOM)
  20. Swift5 语法学习

热门文章

  1. USACO-Section1.4 Barn Repair (贪心算法)
  2. Redis持久化RDB
  3. 关于内置浏览器的问题
  4. Linux 统计某个字符串出现的次数
  5. Windows 7安装PlayReady出现“任务被禁用”错误信息
  6. hibernate 简单笔记(一)
  7. silverlight 不可
  8. 戏耍Transaction,多个连接的Transaction处理(非COM+)
  9. 在GPU上运行,性能是NumPy的11倍,这个Python库你值得拥有
  10. 这些“震惊世界的新发现”,原来都是科学界的大骗局