背水一战 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相关推荐
- 背水一战 Windows 10 (40) - 控件(导航类): AppBar, CommandBar
原文:背水一战 Windows 10 (40) - 控件(导航类): AppBar, CommandBar [源码下载] 背水一战 Windows 10 (40) - 控件(导航类): AppBar, ...
- 背水一战 Windows 10 (42) - 控件(导航类): Frame 动画
原文:背水一战 Windows 10 (42) - 控件(导航类): Frame 动画 [源码下载] 背水一战 Windows 10 (42) - 控件(导航类): Frame 动画 作者:webab ...
- 背水一战 Windows 10 (61) - 控件(媒体类): InkCanvas 涂鸦编辑
背水一战 Windows 10 (61) - 控件(媒体类): InkCanvas 涂鸦编辑 原文:背水一战 Windows 10 (61) - 控件(媒体类): InkCanvas 涂鸦编辑 [源码 ...
- 背水一战 Windows 10 (36) - 控件(弹出类): ToolTip, Popup, PopupMenu
原文:背水一战 Windows 10 (36) - 控件(弹出类): ToolTip, Popup, PopupMenu [源码下载] 背水一战 Windows 10 (36) - 控件(弹出类): ...
- 背水一战 Windows 10 (30) - 控件(文本类): AutoSuggestBox
背水一战 Windows 10 (30) - 控件(文本类): AutoSuggestBox 原文:背水一战 Windows 10 (30) - 控件(文本类): AutoSuggestBox [源码 ...
- 背水一战 Windows 10 (70) - 控件(控件基类): UIElement - Transform3D(3D变换), Projection(3D投影)...
原文:背水一战 Windows 10 (70) - 控件(控件基类): UIElement - Transform3D(3D变换), Projection(3D投影) [源码下载] 背水一战 Wind ...
- 背水一战 Windows 10 (34) - 控件(进度类): RangeBase, Slider, ProgressBar, ProgressRing
背水一战 Windows 10 (34) - 控件(进度类): RangeBase, Slider, ProgressBar, ProgressRing 原文:背水一战 Windows 10 (34) ...
- 背水一战 Windows 10 (38) - 控件(布局类): Panel, Canvas, RelativePanel, StackPanel, Grid
原文: 背水一战 Windows 10 (38) - 控件(布局类): Panel, Canvas, RelativePanel, StackPanel, Grid [源码下载] 背水一战 Windo ...
- 背水一战 Windows 10 (55) - 控件(集合类): SemanticZoom, ISemanticZoomInformation
原文:背水一战 Windows 10 (55) - 控件(集合类): SemanticZoom, ISemanticZoomInformation [源码下载] 背水一战 Windows 10 (55 ...
最新文章
- 函数调用和尾递归的一点认识
- 多路I/O转接服务器——epoll
- 解決“无法解决 equal to 操作的排序规则冲突 ”问题
- 我刚做的一个TreeView的CheckBox进行选中插入数据库,从数据库中读取数据后让CheckBox勾选的代码!...
- 干货!专治设计师没灵感没创意没素材
- 机器学习- 吴恩达Andrew Ng Week8 知识总结 Dimensionality Reduction
- K8S知道,K9S又是个什么鬼?
- 根据CTP接口计算现手、增仓、开平、对手盘 (1)
- 【汇编程序】实现输出2012-2100年之间所有闰年
- Navicat快捷键选择当前行
- Type 和 class 的区别
- 下载人人网相册的所有图片
- 如何提高系统稳定性?
- J-Link在keil软件找不到芯片 与 软件提示dll错误
- ubuntu中,出现Failed to fetch http://…..时,需要换源
- 【查询、注销名下的支付宝账号】
- DOM操作style属性
- 小玩意 - Chrome插件——GreenChrome(双击关闭标签,新窗口打开新地址)
- DVWA指点迷津-XSS(DOM)
- Swift5 语法学习