可以在WinJS/Windows 8应用程序中以编程方式设置ListView的布局吗?
我有一个ListView模板,正在多个地方使用,我想动态更改布局类型:可以在WinJS/Windows 8应用程序中以编程方式设置ListView的布局吗?,listview,windows-8,microsoft-metro,winjs,Listview,Windows 8,Microsoft Metro,Winjs,我有一个ListView模板,正在多个地方使用,我想动态更改布局类型: <div class="sorteditemslist" arial-label="sorted items" data-win-control="WinJS.UI.ListView" data-win-options="{layout: { type: WinJS.UI.ListLayout}}" data-win-bind="winControl.itemDataSource: items.da
<div class="sorteditemslist" arial-label="sorted items"
data-win-control="WinJS.UI.ListView"
data-win-options="{layout: { type: WinJS.UI.ListLayout}}"
data-win-bind="winControl.itemDataSource: items.dataSource; winControl.iteminvoked: ItemInvoked;">
默认的布局类型是
WinJS.UI.GridLayout
,但在某些情况下,我想将其更改为ListLayout
是的,这是可能的。我能够使用以下代码使其正常工作:
var listView = element.querySelector(".sorteditemslist").winControl;
WinJS.ui.setOptions(listView, { layout: { type: WinJS.UI.ListLayout }});
另外,确保在模板中拉出对布局的引用,或者在代码中处理这两种情况。有关布局的更多信息,请参见@wloescher指出的,您可以使用:
listViewElem.layout = new WinJS.UI.GridLayout({ orientation: 'horizontal', maxRows: 1 });
您可以跳过setOptions调用,只需执行以下操作:listView.layout={type:WinJS.UI.ListLayout};我发现当出现问题时,这更容易调试。您还可以使用以下语法:listView.layout=new WinJS.UI.ListLayout