zoukankan      html  css  js  c++  java
  • 背水一战 Windows 10 (41)

    [源码下载]


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



    作者:webabcd


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

    • Frame



    示例
    Controls/NavigationControl/FrameDemo.xaml

    <Page
        x: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

    <Page
        x: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

    <Page
        x: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
    [源码下载]

  • 相关阅读:
    双列集合
    单列集合
    Comparable和Comparator的区别
    用友U8 |【固定资产】固定资产生成凭证,点完计提折旧后没有凭证出来
    用友U8 |【应收管理】为什么在应收模块弃审销售发票,弃审不成功?
    用友U8 | 【总账】应收核销明细报错,提示:将截断字符串或二进制数据
    用友U8 | 【网上银行】网上银行模块网银支付后台字段说明
    用友U8 | 【实施导航】引入交易单位档案,提示:账号不能为空!
    用友U8 | 【实施导航】已经创建的人员档案,如何更新维护银行信息
    用友U8 |【合同管理】合同结算单不能失效
  • 原文地址:https://www.cnblogs.com/webabcd/p/6305391.html
Copyright © 2011-2022 走看看