0

WinJS.UI.ListView在一个用于 Windows-8 Metro 界面的 JavaScript 项目中使用了一个。

这是 HTML 代码:

<div id="myMain">
    <div id="myListTemplate" data-win-control="WinJS.Binding.Template">
        <div class="myListViewItem">
            <p data-win-bind="innerText: description"></p>
        </div>
    </div>
    <div id="myListView"
        data-win-control="WinJS.UI.ListView"
        data-win-options="{ itemTemplate: myTemplate, layout: {type: WinJS.UI.ListLayout} }">
    </div>
 </div>

和 JavaScript 的一部分:

ready: function (element, options) {
            // Set up the ListView.
            var myLView = myListView.winControl;
            WinJS.UI.setOptions(favoritesLView, {
                itemDataSource: dataSource,
                oniteminvoked: this.onItemInvoked.bind(this),
                selectionMode: WinJS.UI.SelectionMode.none
            });
        },

dataSource列表信息存储在哪里。它是从以下位置获得的列表: var myList = new WinJS.Binding.List(myJSONarray);

该代码在横向和纵向视图中工作,但在快照视图中不起作用。尽管myList包含所有元素,但列表视图显示为空。

这是 Windows 8 中的错误吗?有人知道解决方法吗?我发现这个链接有同样的问题,但它的解决方案对我不起作用: http ://social.msdn.microsoft.com/Forums/pl-PL/winappswithhtml5/thread/ce8c722d-526b-4226-9e40-642ddb37422b

4

1 回答 1

0

不显示 ListView 的一个原因是元素或任何父元素的显示设置为“无”。当元素再次可见时,您将需要调用 listView.forceLayout()。请参阅 MSDN 的以下说明, http: //msdn.microsoft.com/en-us/library/windows/apps/hh758352.aspx

当您将 ListView 或其父元素的 style.display 属性设置为“none”时,应用会丢弃有关这些元素的布局信息。当您将 display 属性的值更改回使所有内容再次可见的样式时,应用程序将布局所有元素,但 ListView 不会收到有关当前布局的信息,并且布局无效。当您再次使 ListView 可见时,您可以通过调用此函数来解决此问题。

于 2013-01-10T15:35:49.633 回答