0

アプリケーションがスナップされたときに、listView コントロールのレイアウトを「GridView」から「ListView」に変更しようとしています。もちろん、それ以外の状態では "GridView" に戻る必要があります。コードを書いたのですが、うまくいかないので、なぜだろう...

これは私が書いたコードです:

var viewState = Windows.UI.ViewManagement.ApplicationView;
var list = document.getElementById("messageDisplay").winControl;
if (viewState == Windows.UI.ViewManagement.ApplicationViewState.snapped) {
    list.layout = new WinJS.UI.ListLayout();
}
else
{
    list.layout = new WinJS.UI.GridLayout();
}
4

2 に答える 2

2

ここから取得したように、サイズ変更イベントをリッスンして、リストビューのレイアウト プロパティを変更します。

コードのどこで同様のコードを呼び出しているのかわかりません。必要なメソッド全体を次に示します。

window.addEventListener("サイズ変更", 関数 (e) {
    var currentViewState = Windows.UI.ViewManagement.ApplicationView.value;
    var snapped = Windows.UI.ViewManagement.ApplicationViewState.snapped;

    if (currentViewState === スナップ) {
        that.listView.layout = new WinJS.UI.ListLayout();
    }
    else if (lastViewState === スナップ && currentViewState !== スナップ) {
        that.listView.layout = new WinJS.UI.GridLayout();
    }

    lastViewState = currentViewState;
});

于 2013-04-26T18:35:23.663 に答える
0

list.forceLayout() を呼び出してみると、何度も命が救われました... ;-)

于 2013-04-27T08:43:40.987 に答える