vecchio post
Sì, è certamente possibile personalizzare tutto. Penso che il tuo problema di rendering provenga da ciò che potresti aver dimenticato, lo forceLayout
.
ready: function (element, options) {
element.querySelector("#listView").winControl.forceLayout();
}
io non ho il mio Windows 8 nei pressi di me così se nessun altro risposta e il problema non è venuto dal forceLayout
io aggiornare la risposta dal la notte.
Spero che questo aiuto.
Ok, quindi ho frainteso il problema in precedenza.
Ecco qualcosa che dovrebbe soddisfarti.
Il problema è che devi gestire il diverso stato di visualizzazione della tua applicazione in entrambi i file JavaScript e CSS.
Per quanto riguarda il codice JavaScript, ho utilizzato due funzioni che possono essere trovate nel modello di applicazione della griglia, ad esempio. Quindi ho modificato lo scenario4.js per ottenere questo codice.
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 });
}
}
}
});
})();
Poi ho cancellato l'intero layout
proprietà del listview nella scenario4.html da quando creo la disposizione di cui sopra nelle scenario4.js
Pertanto vostro ListView utilizza un layout diverso a seconda della visualizzazione stato ma avrai lo stesso risultato ottenuto prima (devi comunque cambiare lo scenario mentre sei in modalità snap per vedere il risultato).
Quindi non ci resta che aggiornare lo scenario4.css in base allo stato di visualizzazione e in CSS 3 abbiamo le query multimediali che ci consentono di farlo. Quindi a seconda dello stato della vista qui snapped
sostituiremo le nostre proprietà. Devi solo aggiungere il codice qui sotto al tuo scenario4.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;
}
}
Spero che questo tempo aiuta;)
C'era già una chiamata 'forceLayout()' su 'ready', che non ha aiutato. Per testare ulteriormente, ho aggiunto un pulsante per chiamare manualmente 'forceLayout()'. Quando clicchi puoi vedere che il 'ListView' si rende, ma il risultato è lo stesso, con elementi sovrapposti ... – sth
Ok quindi sarò a casa tra 4 ore proverò a riprodurre il tuo problema e Pubblicherò se posso ripararlo. A proposito, sei nell'anteprima del rilascio o nell'anteprima del consumatore? – Aymeric
Sto usando l'anteprima di rilascio. – sth