Windows store app Settings 的 应用 ( viewmodel + windows.storage)
1.在首页 加入 一个元素(加下滑线的)。此元素绑定了两个属性
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>App1</title> <!-- WinJS references -->
<link href="//Microsoft.WinJS.1.0/css/ui-dark.css" rel="stylesheet" />
<script src="//Microsoft.WinJS.1.0/js/base.js"></script>
<script src="//Microsoft.WinJS.1.0/js/ui.js"></script> <!-- App1 references -->
<link href="/css/default.css" rel="stylesheet" />
<script src="/js/default.js"></script>
<script src="/js/util.js" type="text/javascript"> </script>
</head>
<body>
<div id="aa" data-win-bind="style.color:color;innerText:text" style="height: 40px; width: 100px"></div>
</body>
</html>
2.定义viewmodel, 并监听 viewmodel的属性变化。这样就可以在属性变化的时候,在更新UI的同时,去做想做的事。比如:更改本地存储。首页js 如下:
(function () {
"use strict"; WinJS.Binding.optimizeBindingReferences = true; var app = WinJS.Application;
var activation = Windows.ApplicationModel.Activation;
WinJS.Application.onsettings = function (e) { //添加设置的选项
e.detail.applicationcommands = {// href: 是设置相关信息使用的页面 | title: 就是 设置显示的文字 | color : 对应 settings.html 内 拥有 data-win-control="WinJS.UI.SettingsFlyout" 属性的元素的id
"color": { href: "pages/settings.html", title: "更改字体颜色&内容" }
}; //把 自定义的设置选项 添加到 设置窗口
WinJS.UI.SettingsFlyout.populateSettings(e);
}; app.onactivated = function (args) {
if (args.detail.kind == activation.ActivationKind.launch) { //定义一个 ViewModel
WinJS.Namespace.define("ViewModel", {
Settings: WinJS.Binding.as({
color: "red",
text: 'aaaasdasdasdsa'
})
}); //需要观察的属性
var settings = ['color', 'text']; //给 viewmodel 绑定 属性改变事件
AddisonUitl.BindViewModelEvent(ViewModel.Settings, settings); WinJS.UI.processAll().then(function () { //绑定数据
WinJS.Binding.processAll(document.getElementById('aa'), ViewModel.Settings);
})
}
} app.start();
})();
3.因为在 添加自定义设置 选项的时候,需要一个设置页面,下面是 settings.html
<!DOCTYPE HTML>
<html>
<head>
<title></title>
<style>
#colorsDiv #backbutton {
color: #ffd800;
border-color: #ffd800;
} #colorsDiv div.win-header {
color: white;
font-weight: bolder;
background-color: #0094ff;
}
</style>
<script>
WinJS.UI.Pages.define("pages/settings.html", {
ready: function () { document.getElementById("backbutton").addEventListener("click", function () {
WinJS.UI.SettingsFlyout.show();
var bgColor = document.getElementById('bg').value,
text = document.getElementById('text2').value; //更改viewmodel的属性值,触发 viewmodel bind的事件,从而去更改 本地存储的值。
ViewModel.Settings.color = bgColor;
ViewModel.Settings.text = text;
}); }
});
</script>
</head>
<body>
<div id="color" data-win-control="WinJS.UI.SettingsFlyout">
<div class="win-header">
<button id="backbutton" class="win-backbutton"></button>
<div class="win-label">Colors</div>
</div>
<div class="win-content"> <h1>背景颜色</h1>
<input id="bg" /> <h1>更改内容</h1>
<input id="text2">
</div>
</div>
</body>
</html>
4.下面是 util.js 的代码:
WinJS.Namespace.define('AddisonUitl', { /// <summary> </summary>
/// <param name="name" type=""> property of ViewModel </param>
/// <param name="eventType" type=""> the key in param name </param>
BindViewModelEvent: function (name, eventType) {
var that = this;
eventType.forEach(function (item, index) { //载入 用户设置 信息
var valArray = Windows.Storage.ApplicationData.current.localSettings.values;
if (valArray[item] != undefined) {
name[item] = valArray[item];
} //绑定属性改变事件
name.bind(item, function (newVal, oldVal) { if (oldVal != null) {
that.storeSetting(item, newVal);
// that.updateViewModel(name, item, newVal);
}
})
})
}, storeSetting: function (key, value) {
var store = Windows.Storage;
store.ApplicationData.current.localSettings.values[key] = value;
}, updateViewModel: function (name, key, value) {
name[key] = value;
}
})
Windows store app Settings 的 应用 ( viewmodel + windows.storage)的更多相关文章
- Windows Store App 过渡动画
Windows Store App 过渡动画 在开发Windows应用商店应用程序时,如果希望界面元素进入或者离开屏幕时显得自然和流畅,可以为其添加过渡动画.过渡动画能够及时地提示用户屏幕所发 ...
- 在桌面程序上和Metro/Modern/Windows store app的交互(相互打开,配置读取)
这个标题真是取得我都觉得蛋疼..微软改名狂魔搞得我都不知道要叫哪个好.. 这边记录一下自己的桌面程序跟windows store app交互的过程. 由于某些原因,微软的商店应用的安全沙箱导致很多事情 ...
- Windows store app[Part 4]:深入WinRT的异步机制
接上篇Windows store app[Part 3]:认识WinRT的异步机制 WinRT异步机制回顾: IAsyncInfo接口:WinRT下异步功能的核心,该接口提供所有异步操作的基本功能,如 ...
- Windows store app[Part 3]:认识WinRT的异步机制
WinRT异步机制的诞生背景 当编写一个触控应用程序时,执行一个耗时函数,并通知UI更新,我们希望所有的交互过程都可以做出快速的反应.流畅的操作感变的十分重要. 在连接外部程序接口获取数据,操作本地数 ...
- windows store app search contract
代码如下: html: <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> ...
- windows store app Lifecycle
1.Activated 2.Suspended 3.Resumed 4.Terminated 对应的 js代码: (function () { "use strict"; WinJ ...
- 05、Windows Store app 的图片裁切(更新)
在 Win Phone Silverlight api 中,有一个 PhotoChooserTask 选择器,指定宽.高属性,在选择图片的时候, 可以进行裁切,代码: PhotoChooserTask ...
- 01、Windows Store APP 设置页面横竖屏的方法
在 windows phone store app 中,判断和设置页面横竖屏的方法,与 silverlight 中的 Page 类 不同,不能直接通过 Page.Orientation 进行设置.而是 ...
- Windows store app[Part 1]:读取U盘数据
Windows 8系统下开发App程序,对于.NET程序员来说,需要重新熟悉下类库. 关于WinRT,引用一张网上传的很多的结构图: 图1 针对App的开发,App工作在系统划定的安全沙箱内,所以通过 ...
随机推荐
- Java基础知识强化之IO流笔记68:Properties和IO流集合使用
1. Properties和IO流集合使用 这里的集合必须是Properties集合: public void load(Reader reader):把文件中的数据读取到集合中 public v ...
- 数据结构与算法分析(2)——表、栈和队列
抽象数据类型 抽象数据类型(ADT)是一系列操作的集合.诸如表.集合.图和他们的操作一起可以看做是抽象数据类型 表 List 表的实现有两种:数组和链表.数组实现的表在插入和删除操作上的花 ...
- 异常的应用finally与总结
一.finally{ },finally块中放入一定要执行的代码,通常用来关闭数据库,关闭链接,节约资源,所以finally中的内容一定要被执行,但是有一张情况不被执行,就是catch(Excep ...
- [转].net 调用oracle存储过程返回多个记录集
本文转自:http://www.netwinform.com/articleinfo.aspx?id=17 存储过程: CREATE OR REPLACE PROCEDURE p_query_cs ( ...
- Java获取 JVM 运行信息
import java.lang.management.ClassLoadingMXBean; import java.lang.management.ManagementFactory; impor ...
- 关于HTML5标签不兼容(IE6~8)
HTML5的语义化标签以及属性,可以让开发者非常方便地实现清晰的web页面布局,加上CSS3的效果渲染,快速建立丰富灵活的web页面显得非常简单. 比较常用的HTML5的新标签元素有: <hea ...
- JAVA构造器、this、super
构造器是为了创建一个类的实例.这个过程也可以在创建一个对象的时候用到: Platypus p1 = new Platypus(); 相反,方法的作用是为了执行java代码. 修饰符,返回值和命名的不同 ...
- JSDOM之节点
javascript-节点属性详解 根据 DOM,HTML 文档中的每个成分都是一个节点. DOM 是这样规定的: 整个文档是一个文档节点 每个 HTML 标签是一个元素节点 包含在 HTML 元素中 ...
- JAXB - XML Schema Types, Defining Types for XML Elements Without Content
Types for XML elements are constructed using xsd:complexType, even if they do not have content. The ...
- 第十六篇、MBprogressHUD的使用和获取当前的控制器
简介: 在开发应用的时候,为了更好的增加用户的体验,常常在客户端向服务端请求数据的时候,在适当的地方加上非模态HUD,让用户可以可以知道当前的进度,稍作等待. MBProgressHUD 第三方框架G ...