WinJS.UI.ListView无法在捕捉视图中工作

时间:2012-07-27 09:44:39

标签: javascript windows-8 microsoft-metro

我在Windows-8 Metro界面的JavaScript项目中使用WinJS.UI.ListView

这是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

1 个答案:

答案 0 :(得分:0)

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

  

设置ListView或其父级的style.display属性时   要素“无”,该应用程序会丢弃有关这些元素的布局信息   元素。当您将显示属性的值更改回a时   使一切再次可见的风格,应用程序将布局所有   元素,但ListView不会收到有关当前的信息   布局并将具有无效的布局。你可以解决这个问题   再次使ListView可见时调用此函数。