Windows Store App JavaScript 开发:WinJS库控件

在介绍了如何使用标准的HTML控件以及WinJS库中提供的新控件之后,下面来着重介绍WinJS库中几种常用的控件。

(1)ListView控件

在开发Windows应用商店应用时可以使用ListView控件以网格或列表的方式显示多条数据。ListView控件的常用属性有:

groupDataSource属性,用来设置分组的数据源。

groupHeaderTemplate属性,用来为分组的头部设置模板。

itemDataSource属性,用来为组中的数据项设置数据源。

itemTemplate属性,用来为组中的数据项设置模板。

selectionMode属性,用来设置数据项的选择模式,属性值有“none”、“single”和“multi”。当该属性的值为“none”时表示不允许选择数据项;当值为“single”时表示只可以选择一个数据项;当值为“multi”时表示可以选择多个数据项。

layout属性,用来设置ListView控件的布局,该属性的值是Object类型,属性值有“{type:WinJS.UI.GridLayout}”和“{ type:WinJS.UI.ListLayout}”。当该属性的值为“{type:WinJS.UI.GridLayout}”时,ListView控件会以网格形式显示数据;当值为“{ type:WinJS.UI.ListLayout}”时,ListView控件会以列表形式显示数据。

在应用程序中使用ListView控件来显示多条数据时,对ListView控件的不同操作会触发不同的事件,该控件的常用事件有:

oniteminvoked事件,当单击数据项时会触发该事件。

onkeyboardnavigating事件,使用键盘上的方向键改变选区内的焦点时会触发该事件。

onselectionchanged事件,当选择发生改变时会触发该事件。

在介绍了ListView控件的常用属性和事件后,下面来看一下如何向页面中添加ListView控件,以及如何为ListView控件设置属性和注册事件处理函数。

可以通过在页面中定义一个div元素并将data-win-control属性设置为“WinJS.UI.ListView”来向页面中添加ListView控件,同时可以通过div元素的data-win-options属性设置ListView控件的属性。例如,要在一个页面中添加一个ListView控件并以网格形式显示数据,那么可以在这个页面的body元素内定义一个div元素,并将data-win-control属性设置为“WinJS.UI.ListView”,同时通过data-win-options属性设置ListView控件的layout属性值为“{type:WinJS.UI.GridLayout}”,相应的HTML代码片段如下所示:

<div id="listviewID" data-win-control="WinJS.UI.ListView" data-win-options="{layout: {type: WinJS.UI.GridLayout}}"></div>

添加了ListView控件之后,可以在后台使用addEventListener函数来为其注册相关事件的处理函数。例如为上面示例中的ListView控件注册oniteminvoked事件的处理函数InvokeItemHandler,相应的JavaScript代码片段如下所示:

var listview = document.getElementById("listviewID").winControl;

listview.addEventListener("iteminvoked", InvokeItemHandler);

function InvokeItemHandler() {

    /* 在此处编写事件处理过程的代码 */

}

在上面的代码中,首先以“listviewID”作为参数调用document对象的getElementById函数并使用winControl属性获得id属性值为listviewID的元素对象,并赋值给变量listview。然后通过listview变量调用元素对象的addEventListener函数为oniteminvoked事件注册事件处理函数InvokeItemHandler,在InvokeItemHandler函数中编写处理这个事件的过程代码。

(2)HtmlControl控件

可以在一个页面中使用HtmlControl控件来显示另一个页面的内容。这个控件有一个uri属性,该属性的值为被显示页面的地址,通过赋予该属性不同的值,可在HtmlControl控件所在的位置加载不同的页面。与ListView控件类似,可以通过在一个页面的body元素中定义一个div元素并将data-win-control属性设置成“WinJS.UI.HtmlControl”来向这个页面中添加HtmlControl控件,同时可以通过div元素的data-win-options属性设置HtmlControl控件的属性。

例如,要在一个现有项目的default.html页面中显示项目根目录下的IncludedPage.html页面的内容,那么可以在default.html页面的body元素中定义一个div元素并将data-win-control属性设置成“WinJS.UI.HtmlControl”,同时通过div元素的data-win-options属性设置HtmlControl控件的uri属性值为IncludedPage.html页面的地址,相应的HTML代码片段如下所示:

<div data-win-control="WinJS.UI.HtmlControl" data-win-options="{uri: ‘/IncludedPage.html‘}"></div>

(3)PageControl控件

PageControl控件是一种自定义控件,可以将一个页面的内容和逻辑功能定义成一个PageControl控件,然后通过在其他页面中添加这个PageControl控件来加载相应的页面内容,这样就方便了在多个页面中加载相同的页面内容。

可以使用WinJS.UI.Pages命名空间下的define函数来将一个页面定义成PageControl控件,该函数有uri和members两个参数,其中uri表示页面的地址,members是对这个页面中的成员进行的一些初始化操作,该函数执行完成后会返回一个PageControl类型的对象,语法格式如下所示:

var pageControlObject = WinJS.UI.Pages.define(uri, members);

定义了PageControl控件后,如果想要向一个页面中添加这个控件,可以在该页面的body元素中定义一个div元素并将data-win-control属性设置为define函数所返回的PageControl对象,同时还需要在这个页面的head元素中引用定义PageControl控件的Javscript文件。

(4)Menu控件

在开发应用程序时使用Menu控件可以创建命令菜单弹出窗口。Menu控件的常用属性有:

alignment属性,用于设置命令项的对齐方式,属性值有“center”、“left”和“right”,默认值为“center”。

commands属性,用于向菜单弹出窗口中添加命令。

hidden属性,用于判断Menu控件是否隐藏。

q  placement属性,用于设置菜单弹出窗口的默认位置,属性值有“auto”、“top”、“bottom”、“left”和“right”,默认值为“auto”。

当对Menu控件进行操作时,不同的操作会触发不同的事件,该控件的事件有:

onafterhide事件,命令菜单弹出窗口被隐藏之后会触发该事件。

onaftershow事件,命令菜单弹出窗口显示后会触发该事件。

onbeforehide事件,命令菜单弹出窗口被隐藏之前会触发该事件。

onbeforeshow事件,已被隐藏的命令菜单弹出窗口显示前会触发该事件。

   

在介绍了Menu控件的常用属性和事件后,下面来看一下如何向页面中添加Menu控件,以及如何为Menu控件设置属性和注册事件处理函数。

通过在页面中定义一个div元素并将data-win-control属性设置为“WinJS.UI.Menu”可以向页面中添加Menu控件,但只能通过编写JavaScript代码的方式为Menu控件设置属性。例如,要向一个页面中添加一个Menu控件并设置命令项的对齐方式为左对齐,那么可以在这个页面的body元素内定义一个div元素并将div元素的data-win-control属性设置成“WinJS.UI. Menu”,为了能检索到这个div元素,设置它的id属性值为“menuID”。相应的HTML代码片段如下所示:

<div id="menuID" data-win-control="WinJS.UI.Menu"></div>

这样就向这个页面中添加了Menu控件,然后在后台编写JavaScript代码来设置这个Menu控件的alignment属性值为“left”,JavaScript代码片段如下所示:

var menuControl = document.getElementById("menuID").winControl;

menuControl.alignment = "left";

添加了Menu控件之后,除了能够后台设置控件的属性之外,还可以在后台使用addEventListener函数来为其注册相关事件的处理函数。例如,为上面示例中的Menu控件注册onafterhide事件的处理函数HideMenuHandler,相应的JavaScript代码片段如下所示:

var menuControl= document.getElementById("menuID").winControl;

menuControl.addEventListener("afterhide", HideMenuHandler);

function HideMenuHandler() {

    /* 在此处编写事件处理过程的代码 */

}

在上面的代码中,首先以“menuID”作为参数调用document对象的getElementById函数并使用winControl属性获得id属性值为menuID的元素对象,并赋给变量menuControl。然后通过menuControl变量调用元素对象的addEventListener函数为onafterhide事件注册处理函数HideMenuHandler,在HideMenuHandler函数中编写处理这个事件的过程代码。

时间: 2024-10-05 12:04:01

Windows Store App JavaScript 开发:WinJS库控件的相关文章

Windows Store App JavaScript 开发:页面加载

  在开发基于JavaScript的Windows应用商店应用时,可以使用HtmlControl和PageControl控件加载一个页面,这两个WinJS库控件曾在上面的内容中提到过,HtmlControl控件接收一个包含页面地址的对象作为参数,并根据这个地址加载相应的页面:PageControl控件是自定义控件,可以使用WinJS.UI.Pages.define函数将一个页面定义为PageControl控件,然后在其他页面中使用,使用这个PageControl控件就相当于加载了该控件相对应的页

Windows Store App JavaScript 开发:模板绑定

WinJS库模板提供了一种格式化显示多条数据的便捷方式,通过这种方式可以将模板与ListView或FlipView等控件结合使用以控制数据的显示格式.定义一个WinJS库模板的方法与定义WinJS库控件的方法相似:在页面中添加一个div元素,将div元素的data-win-control属性设置为WinJS.Binding.Template.定义WinJS库模板以后,需要在WinJS库模板内部添加控件以显示绑定的数据,WinJS库模板内部只能有一个根元素,当绑定多条数据时,需要在WinJS库模板

Windows Store App JavaScript 开发:获取文件和文件夹列表

在应用程序中有时可能需要获取用户库中的内容,以便执行相关的操作.如果要获取某个用户库中的内容,需要先获取到这个用户库,获得用户库可以通过Windows.Storage命名空间中的KnownFolders类的相应属性来实现,可用属性包括documentsLibrary(文档库).musicLibrary(音乐库)和videosLibrary(视频库)等.获取到用户库之后,就可以使用KnownFolders类中的getItemsAsync.getFilesAsync或getFoldersAsync函

Windows Store App JavaScript 开发:选取文件和文件夹

前面提到过,文件打开选取器由FileOpenPicker类表示,用于选取或打开文件,而文件夹选取器由FolderPicker类表示,用来选取文件夹.在FileOpenPicker类中,pickSingleFileAsync函数用于选取单个文件,pickMultipleFilesAsync函数用于选取多个文件:而FolderPicker类中只有一个pickSingleFolderAsync函数,用来选取单个文件夹.下面以一个应用程序为例来演示如何选取文件或文件夹. 新建一个JavaScript的W

Windows Store App JavaScript 开发:小球运动示例

通过前面内容的学习,相信读者已经对开发基于JavaScript的Windows应用商店应用有了一定的了解,本小节通过一个小球运动的示例来介绍如何新建一个JavaScript的Windows应用商店项目,以及怎样向项目中添加功能实现代码. 首先启动Visual Studio 2012集成开发工具,打开"文件"菜单,选择其中的"新建项目"菜单项后会弹出"新建项目"窗口.在"新建项目"窗口左侧的JavaScript模板分类中选择&q

Windows Store App JavaScript 开发:简单对象绑定

简单对象绑定是一种基本的绑定类型,可以实现将一个对象中的数据绑定到HTML元素的属性.下面通过一个示例来演示如何使用HTML5和JavaScript开发一个实现简单对象绑定的Windows应用商店应用程序.在这个应用程序中将一个img控件与一个包含图片路径信息的对象相绑定,实现在img控件中显示图片. 在Visual Studio 2012中新建一个JavaScript的Windows应用商店的空白应用程序项目,将其命名为SimpleObjectBinding.接着添加项目中用到的图片文件,在项

Windows Store App JavaScript 开发:页内导航

页内导航是在一个页面内根据需要加载其他页面的内容,在开发基于JavaScript的Windows应用商店应用时,可以使用WinJS.Navigation.navigate函数传递要加载的页面地址并使用PageControlNavigator控件加载其他页面的内容.WinJS.Navigation.navigate函数以一个包含页面地址的对象为参数,在该函数执行时将触发WinJS.Navigation.onnavigated事件并把页面地址传递给该事件.PageControlNavigator控件

Windows Store App JavaScript 开发:文件选取器

正如前面章节C#语言中所介绍的,文件选取器是应用与系统进行交互的一个接口,通过文件选取器可以在应用中直接与文件系统进行交互,访问不同位置的文件或文件夹,或者将文件存储在指定位置.文件选取器分为对文件进行操作的选取器和对文件夹进行操作的选取器.对文件进行操作的选取器包含文件打开选取器和文件保存选取器,文件打开选取器由FileOpenPicker类表示,用来选取或打开文件:文件保存选取器由FileSavePicker类表示,用来向指定的文件系统位置中保存文件.对文件夹进行操作的选取器由FolderP

C#学习(九)之Windows Store App &amp; WP 开发小记(一)

由于课程已经讲述完毕,所以本次学习记录就讨论记录一下我在Windows Store App & WP开发中遇到的一些问题与收获. 一.数据库(Sqlite)的使用 虽然资料很难找,但sqlite在这两个平台的使用还是很简单的. 首先是环境配置阶段: 1.工具->拓展与更新->联机,然后在右上搜索sqlite,之后下载安装下图两个打勾的拓展包,注意要重启VS方才生效. 2.项目->管理NuGet程序包->联机,搜索sqlite,安装下图打勾内容,如果项目多出下图两个文件即安装