【WIN10】使用自己的PageLoader加載Page
源碼下載:http://yunpan.cn/cFwwrT4V5rHIM 访问密码 1b97
在上一篇博客中,我已經說明了為什麼要自己寫一個PageLoader。原因就是,Frame的GoBack只是簡單的重新加載一個頁面,並不會保存原來的頁面的狀態。
怎麼樣才能保存原來的頁面狀態呢?只要原來的Frame不刪除,不就可以保存原來的狀態了嗎?所以實現起來就簡單多了,每Navigate一個頁面,我們就生成一個Frame,添加到Grid中,當Back時,我們就把這個Frame刪除掉。這樣就可以達到我們的目的了。
為了保證我們新加的Frame一定顯示在最前面,所以我們可以強制把ZIndex++,即每添加一個Frame,它的ZIndex都遞增。
而且因為是用了Add、Delete,我們就可以系統主題動畫了。
public void Init (Grid root)
{
root_ = root; if (root_.ChildrenTransitions == null)
{
TransitionCollection trans = new TransitionCollection()
{
new AddDeleteThemeTransition() { }
};
root_.ChildrenTransitions = trans;
}
else
{
root_.ChildrenTransitions.Add(new AddDeleteThemeTransition());
}
}
PageLoader的源碼:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Media.Animation; namespace NavigateProj
{
public class PageLoader
{
private class PageInfo
{
public Type PageType { get; set; }
public Frame PageFrame { get; set; } public object PageParam{ get; set; } public bool Load()
{
return PageFrame.Navigate(PageType, PageParam);
}
} private static PageLoader self_ = null;
private Grid root_ = null;
private Stack<PageInfo> pages_ = new Stack<PageInfo>();
private int zindex_ = ; private PageLoader() { } public static PageLoader Instance
{
get
{
if (self_ == null)
{
self_ = new PageLoader();
}
return self_;
}
} public void Init (Grid root)
{
root_ = root; if (root_.ChildrenTransitions == null)
{
TransitionCollection trans = new TransitionCollection()
{
new AddDeleteThemeTransition() { }
};
root_.ChildrenTransitions = trans;
}
else
{
root_.ChildrenTransitions.Add(new AddDeleteThemeTransition());
}
} public bool LoadPage (Type pageType, object param = null)
{
if (root_ == null) return false; PageInfo newPageInfo = new PageInfo()
{
PageType = pageType,
PageFrame = new Frame(),
PageParam = param,
}; // ZIndex 保證在最前面
Canvas.SetZIndex(newPageInfo.PageFrame, zindex_); if (!newPageInfo.Load())
{
return false;
} root_.Children.Add(newPageInfo.PageFrame);
++zindex_;
pages_.Push(newPageInfo);
return true;
} public bool Back ()
{
if (pages_.Count <= ) return false; var page = pages_.Pop();
root_.Children.Remove(page.PageFrame);
--zindex_; var currPage = pages_.Peek();
return true;
}
}
}
【WIN10】使用自己的PageLoader加載Page的更多相关文章
- 容器加載Web工程的Web.xml文件介紹
转 容器加載Web工程的Web.xml文件介紹 [-] 这篇文章主要是综合网上关于webxml的一些介绍希望对大家有所帮助也欢迎大家一起讨论 ---题记 一 Webxml详解 一 ...
- Jquery easy ui datagrid動態加載列問題
1.如下图效果是当选择不同的日期范围时datagrid则会加载出对应的列数
- jquery 加載
load(url,data,callback)從遠程服務器加載數據,并放入到被選中元素上: url是必須有的,希望加載的url: data是可選的,表示和請求一起發送的鍵值對數據: callback是 ...
- Windows Store App下代码加载page resource和resw文件里的string
加载page resource 在page的code behind里: this.Resources["textBoxStyle"] 加载resw文件里的string: Resou ...
- [Win10] 安装虚拟光驱 用于加载ISO等镜像文件
百度上找到UltraISO安装 一般来说安装到这就基本会显示一个 若经过上述步骤仍没出现虚拟光驱,则尝试进行加载ISO镜像文件到虚拟光驱然后再看看 这样基本就大功告成了~
- Magento2-2.3.4 win10安装完magento无法加载静态资源导致无法进入后台登录页面
后台面无法进入,截图如下
- Ubuntu軟件商店加載失敗的解決方法
Ubuntu軟件商店有的时候加载不出来,先用下面的试试 sudo apt install python-apt 如果不行,继续下面的方法 打开终端,运行下面的命令: sudo apt-get upda ...
- 【WIN10】我的第一個WIN10-UWP應用——古文觀止
已上架,下載地址:https://www.microsoft.com/store/apps/9nblggh6cc32 特點是:繁體豎排,隱藏/顯示標點符號. 截幾張圖來瞅瞅. 1.主界面 這張圖使用的 ...
- 【WIN10】基本控件
先發個下載地址: http://yunpan.cn/cHuCqYzvsWFAL 访问密码 3470 說明一下.這個示例只是最簡單的演示,並不能提供太大的實用價值. 後面會介紹 Bing & ...
随机推荐
- HDU 4825 Xor Sum (裸字典树+二进制异或)
题目链接 Problem Description Zeus 和 Prometheus 做了一个游戏,Prometheus 给 Zeus 一个集合,集合中包含了N个正整数,随后 Prometheus 将 ...
- 南京邮电大学CTF密码学部分Writeup
异性相吸 1.xor 2.hex2binary 3.len(bin(miwen))==len(bin(mingwen)) # -*- coding:utf-8 -*- file_de = open(' ...
- Mysql注入root权限直接写一句话马
首先我们的找到一个有注入的站:这里我用自己搭建的环境表示:大家不要乱来 http://localhost/pentest/sql/sql_injection_get.php?id=1 发现是root权 ...
- 41 - 数据库-pymysql41 - 数据库-pymysql-DBUtils
目录 1 Python操作数据库 2 安装模块 3 基本使用 3.1 创建一个连接 3.2 连接数据库 3.3 游标 3.3.1 利用游标操作数据库 3.3.2 事务管理 3.3.3 执行SQL语句 ...
- linux中core dump开启使用教程【转】
转自:http://www.111cn.net/sys/linux/67291.htm 一.什么是coredump 我们经常听到大家说到程序core掉了,需要定位解决,这里说的大部分是指对应程序由于各 ...
- 美国部分科技公司创始及IPO信息
作者:Ben.Z 时间:2018-04-19 做这份统计表格的目的是为了更好地了解当下美国的IT发展,搞清楚那些耳熟能详的名词的来源. 原文是用WPS统计的,本文仅展示截图. 创始人年龄分析: 1.上 ...
- Codeforces 225C Barcode(矩阵上DP)
题目链接:http://codeforces.com/contest/225/problem/C 题目大意: 给出一个矩阵,只有两种字符'.'和'#',问最少修改多少个点才能让每一列的字符一致,且字符 ...
- JS验证表单中TEXT文本框中是否含有非法字符
<form id="form" action="" method="post"> <input type="hi ...
- HA下的Spark集群工作原理解密
实验环境: zookeeper-3.4.6 Spark:1.6.0 简介: 本篇博客将从以下几点组织文章: 一:Spark 构建高可用HA架构 二:动手实战构建高可用HA 三:提交程序测试HA 一:S ...
- Excel根据单元格内容设置整行颜色
1. 选择需要设置的区域,条件格式中找到“新建规则” 2. 弹出窗口中选择“使用公式确定要设置格式的单元格”一项.填写公式如下: =IF(OR($D1="已完成",$D1=&quo ...