Есть несколько вещей, которые вы можете сделать, чтобы управлять макетом. Во-первых, установить максимальное количество строк, которые ListView будет отображать в макете сетки, например так:
list.winControl.layout.maxRows = 2;
Если у вас достаточно элементов, то это создаст широкий, но неглубокий макет.
Другой вариант, который вы упомянули в своем вопросе, - центрировать ListView и исправить его размер. Я считаю, что самый простой способ сделать это — использовать макет CSS flex box. Вот небольшой самостоятельный пример, который показывает вам как настройку maxRows, так и CSS, который применяется к элементу, содержащему ListView (а не к самому ListView). Создайте новый проект VS, скопируйте разметку в файл default.html и запустите приложение, и вы сможете увидеть эффект:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
<link href="//Microsoft.WinJS.1.0/css/ui-dark.css" rel="stylesheet" />
<script src="//Microsoft.WinJS.1.0/js/base.js"></script>
<script src="//Microsoft.WinJS.1.0/js/ui.js"></script>
<style type="text/css">
#container {
display: -ms-flexbox;
-ms-flex-align: center;
-ms-flex-pack: center;
height: 100%;
}
#list {
width: 1366px; height: 768px;
}
.templateItem {
width: 200px; height: 200px; font-size: 30pt;
margin: 10px; border: thick solid white; background-color: gray;
}
</style>
<script>
WinJS.Application.onactivated = function (args) {
data = new WinJS.Binding.List();
WinJS.UI.processAll().then(function () {
for (var i = 0; i < 8; i++) {
data.push({ value: i });
}
list.winControl.layout.maxRows = 2;
});
}
WinJS.Application.start();
</script>
</head>
<body>
<div id="template" data-win-control="WinJS.Binding.Template">
<div class="templateItem" data-win-bind="innerText: value"></div>
</div>
<div id="container">
<div id="list" data-win-control="WinJS.UI.ListView" data-win-options="{
itemDataSource: data.dataSource,
itemTemplate:template}">
</div>
</div>
</body>
</html>
Трудно сказать по вашему вопросу, но вы также можете отказаться от ListView и использовать что-то другое. Если у вас есть фиксированное количество элементов для отображения, вы можете использовать стандартный элемент HTML и использовать CSS (возможно, используя новый макет сетки), чтобы получить больше контроля над тем, как они отображаются.
person
Adam Freeman
schedule
20.09.2012