antiguo puesto
Sí que sin duda puede personalizar todo. Creo que su problema render proviene de esto, puede haber olvidado, el forceLayout
.
ready: function (element, options) {
element.querySelector("#listView").winControl.forceLayout();
}
no tengo mi Windows 8 cerca de mí por lo que si nadie contesta y el problema no vino de la forceLayout
Voy a actualizar la respuesta de la noche.
Espero que esta ayuda.
Ok, he entendido mal su problema antes.
Aquí hay algo que debería satisfacerte.
Lo que pasa es que tiene que administrar el estado de vista diferente de su aplicación en ambos archivos JavaScript y CSS.
Por lo tanto, con respecto al JavaScript he utilizado dos funciones que se pueden encontrar en la plantilla de la aplicación Grid, por ejemplo. Así que modifiqué el escenario4.js para obtener este código.
function MyCellSpanningJSTemplate(itemPromise) {
return itemPromise.then(function (currentItem) {
var result = document.createElement("div");
// Use source data to decide what size to make the
// ListView item
result.className = currentItem.data.type;
result.style.overflow = "hidden";
// Display image
var image = document.createElement("img");
image.className = "regularListIconTextItem-Image";
image.src = currentItem.data.picture;
result.appendChild(image);
var body = document.createElement("div");
body.className = "regularListIconTextItem-Detail";
body.style.overflow = "hidden";
result.appendChild(body);
// Display title
var title = document.createElement("h4");
title.innerText = currentItem.data.title;
body.appendChild(title);
// Display text
var fulltext = document.createElement("h6");
fulltext.innerText = currentItem.data.text;
body.appendChild(fulltext);
return result;
});
}
var appViewState = Windows.UI.ViewManagement.ApplicationViewState;
var appView = Windows.UI.ViewManagement.ApplicationView;
var ui = WinJS.UI;
(function() {
"use strict";
var page = WinJS.UI.Pages.define("/html/scenario4.html", {
initializeLayout: function (listView, viewState) {
/// <param name="listView" value="WinJS.UI.ListView.prototype" />
if (viewState === appViewState.snapped) {
listView.layout = new ui.ListLayout();
}
else {
listView.layout = new ui.GridLayout({ groupInfo: groupInfo });
}
},
ready: function (element, options) {
var listView = element.querySelector("#listView").winControl;
this.initializeLayout(listView, appView.value);
},
updateLayout: function (element, viewState, lastViewState) {
var listView = element.querySelector("#listView").winControl;
if (lastViewState !== viewState) {
if (lastViewState === appViewState.snapped || viewState === appViewState.snapped) {
this.initializeLayout(listView, viewState);
}
else {
listView.layout = new ui.GridLayout({ groupInfo: groupInfo });
}
}
}
});
})();
Luego he borrado todo el layout
propiedad de la vista de lista en el scenario4.html desde que crear el diseño más arriba en los scenario4.js
lo tanto, su vista de lista utiliza un diseño diferente dependiendo de la vista estado, pero tendrá el mismo resultado que obtiene antes (Por cierto, tiene que cambiar el escenario mientras está en modo de ajuste para ver el resultado).
Así que solo tenemos que actualizar el scenario4.css dependiendo del estado de la vista y en CSS 3 tenemos consultas de medios que nos permiten hacer eso. Luego, dependiendo del estado de la vista aquí snapped
anularemos nuestras propiedades. Solo tiene que agregar el código a continuación a su escenario4.css
@media screen and (-ms-view-state: snapped) {
#listView {
max-width: 260px;
height: 280px;
border: solid 2px rgba(0, 0, 0, 0.13);
}
.regularListIconTextItem {
max-width: 250px;
max-height: 70px;
padding: 5px;
overflow: hidden;
display: -ms-grid;
}
.smallListIconTextItem {
max-width: 250px;
max-height: 70px;
padding: 5px;
overflow: hidden;
background-color: Pink;
display: -ms-grid;
}
/* Medium size */
.mediumListIconTextItem {
max-width: 250px;
max-height: 70px;
padding: 5px;
overflow: hidden;
background-color: LightGreen;
display: -ms-grid;
}
/* Large size */
.largeListIconTextItem {
max-width: 250px;
max-height: 70px;
padding: 5px;
overflow: hidden;
background-color: LightBlue;
display: -ms-grid;
}
}
esperanza esta vez ayuda;)
Ya había una llamada 'forceLayout()' en 'ready', que no ayudó. Para probar esto más, agregué un botón para llamar manualmente a 'forceLayout()'. Cuando haces clic en él, puedes ver que 'ListView' se renderiza, pero el resultado sigue siendo el mismo, con elementos superpuestos ... – sth
Ok, estaré en casa en 4 horas Intentaré reproducir tu problema y Publicaré si puedo arreglarlo. ¿Por qué estás en la Vista previa de la versión o en la Vista previa del consumidor? – Aymeric
Estoy usando la vista previa de la versión. – sth