ListView in WinJS based Windows Store Application

来源:转载

In 2012 I wrote a postList View Data Binding in Windows 8 JavaScript Metro Application. If you follow along this post some of the code will not work. So I decided to write a post again on working with ListView in WinJS. There are three simple steps to work with the ListView.

Step1: Create the Data Source

Let us use JavaScript array as the data source. In the real application you may want to call a service to fetch the data and create the data source. The JavaScript array is created as follows:

var MovieData = [ { Name: 'Abduction', Photo: 'images/abduction.jpg' }, { Name: 'A Better Life', Photo: 'images/abetterlife.jpg' }, { Name: 'A Dangerous Method ', Photo: 'images/adangerousmethod.jpg' }, { Name: 'Begineers', Photo: 'images/beginners.jpg' }, { Name: 'Bell Flower', Photo: 'images/bellflower.jpg' }, { Name: 'Black Thorn', Photo: 'images/blackthorn.jpg' }, { Name: 'Abduction', Photo: 'images/abduction.jpg' }, { Name: 'A Better Life', Photo: 'images/abetterlife.jpg' }, { Name: 'A Dangerous Method ', Photo: 'images/adangerousmethod.jpg' }, { Name: 'Begineers', Photo: 'images/beginners.jpg' }, { Name: 'Bell Flower', Photo: 'images/bellflower.jpg' }, { Name: 'Black Thorn', Photo: 'images/blackthorn.jpg' }, { Name: 'Abduction', Photo: 'images/abduction.jpg' }, { Name: 'A Better Life', Photo: 'images/abetterlife.jpg' }, { Name: 'A Dangerous Method ', Photo: 'images/adangerousmethod.jpg' }, { Name: 'Begineers', Photo: 'images/beginners.jpg' }, { Name: 'Bell Flower', Photo: 'images/bellflower.jpg' }, { Name: 'Black Thorn', Photo: 'images/blackthorn.jpg' }, ];

We cannot set an array directly as the data source of ListView. So to set array as the data source we need to convert the array as List object. MovieArray can be converted to the List object as shown follows:

var dataList = new WinJS.Binding.List(MovieData);

Step2: Create the Template

Once the data source is in placed we need to decide how to display the data in the ListView. Using the Template we decide the way ListView item will be rendered. Binding template can be created setting data-win-control attribute of a div toWinJS.Binding.Template. We are displaying and Photo from the data source. You need to make sure to use exact the same property name as it is in the data source.

<div id="movieitemtemplate" data-win-control="WinJS.Binding.Template"><div data-win-bind="innerText:Name" style="height:20px;"></div><img data-win-bind="src:Photo" style="width:200px;height:150px;" /></div>

Step3: Create the ListView

A div can be converted to a ListView setting data-win-control property toWinJS.UI.ListView.We are setting the itemTemplate to movieitemtemplate which we created in the previous step.

<div id="MovieListView" data-win-control="WinJS.UI.ListView" data-win-options="{itemTemplate: select('#movieitemtemplate')}"></div>

After the ListView is created last step is to bind the ListView to the data source. We have already created List using the JavaScript array. To bind set data source of the list as the itemDataSource of the ListView. It is shown as follows:

args.setPromise(WinJS.UI.processAll());var dataList = new WinJS.Binding.List(MovieData);var MovieList = document.getElementById('MovieListView').winControl;MovieList.itemDataSource = dataList.dataSource;

That’s it. These three steps are needed to work with a ListView in WinJS. Hope you like it. Happy coding.

分享给朋友:
您可能感兴趣的文章:
随机阅读: