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工作在系统划定的安全沙箱内,所以通过 ...
随机推荐
- Android(java)学习笔记137:Android中SimpleAdapter,ArrayAdapter和BaseAdapter常见的适配器
1.SimpleAdapter(BaseAdapter子类扩展类): simpleAdapter的扩展性最好,可以定义各种各样的布局出来,可以放上ImageView(图片)等.可以显示比较复杂的列表, ...
- signal函数、sigaction函数及信号集(sigemptyset,sigaddset)操作函数
信号是与一定的进程相联系的.也就是说,一个进程可以决定在进程中对哪些信号进行什 么样的处理.例如,一个进程可以忽略某些信号而只处理其他一些信号:另外,一个进程还可以选择如何处理信号.总之,这些总与特定 ...
- HP服务器RAID配置
公司服务器硬盘空间不够了(HP的服务器),购买了10块硬盘,由于之前没有做过RAID,感觉很高大上的样子,就请教了HP的技术人员,技术人员发了两份文档,分别是DL380G7(DL580G7)和DL38 ...
- 关于Eclipse中的一些基本知识
Eclipse中寻找JRE的顺序是:vm参数指定的JRE--->elipse目录下的JRE--->操作系统中默认的JRE,利用这个特性也可以用vm参数来解决当本机安装有多个JRE的情况. ...
- Redhat和ubuntu的区别
风大神给了我一个完全基于 Linux 的操作系统ubuntu(乌班图)(是一个以桌面应用为主的Linux操作系统),当然作为linux,服务器应用都不会弱.,说是这个好用,可飞凌上资料用的居然是red ...
- dos下循环复制一张图片的bat
@echo off setlocal enabledelayedexpansion ,,) do ( @echo !dm! copy .png !dm!.png ) 我期待的结果是将140041.pn ...
- winform 上传
public class ImitateSelectFile { public void Select(HtmlElement htmlEle, string fileFullPath) { html ...
- SSRS集成至Web
分几步进行,第一步要实现:IReportServerCredentials 接口第二步:拖入ReportViewer控件第三步:进行报表传参控制.具体如下图描述....代码部分参考下附件 using ...
- ACM——搜索(一)
南邮OJ——1108 搜索(一) 时间限制(普通/Java):3500MS/10500MS 运行内存限制:65536KByte总提交:1023 测试通过:367 ...
- PowerDesigner使用教程 —— 概念数据模型 (转)
一.概念数据模型概述 概念数据模型也称信息模型,它以实体-联系(Entity-RelationShip,简称E-R)理论为基础,并对这一理论进行了扩充.它从用户的观点出发对信息进行建模,主要用于 ...