gpt4 book ai didi

javascript - WinJs 中的 View 状态更改事件在哪里?

转载 作者:行者123 更新时间:2023-11-29 09:55:38 24 4
gpt4 key购买 nike

在 Windows 8 中,当 View 状态从对齐变为填充再变为全屏时;

我如何捕捉这些事件并使用 WinJs 响应它们?

最佳答案

参见 this关于如何捕捉 View 状态变化的博文。基本上,建议归结为捕获调整大小事件,然后像这样检查 View 状态:

 window.addEventListener("resize", onResize);


function onResize() {
// Update view for the new window size
updateView();
}

function updateView() {
// Query for the current view state
var myViewState = Windows.UI.ViewManagement.ApplicationView.value;

var viewStates = Windows.UI.ViewManagement.ApplicationViewState;
var statusText;

// Assign text according to view state
switch (myViewState) {
case viewStates.snapped:
statusText = "This app is snapped!";
break;
case viewStates.filled:
statusText = "This app is in filled state!";
break;
case viewStates.fullScreenLandscape:
statusText = "This app is full screen landscape!";
break;
case viewStates.fullScreenPortrait:
statusText = "This app is full screen portrait!";
break;
default:
statusText = "Error: Invalid view state returned.";
break;
}

如果您查看适用于 Windows 8 的 Microsoft Visual Studio Express 2012 RC template for Javascript你会在 navigator.js 中看到这样的东西:

window.onresize = this._resized.bind(this);

_resized: function(args) {
if (this.pageControl && this.pageControl.updateLayout) {
this.pageControl.updateLayout.call(this.pageControl, this.pageElement, appView.value, this.lastViewstate);
}
this.lastViewstate = appView.value;
},

//*page*.js

updateLayout: function (element, viewState, lastViewState) {
/// <param name="element" domElement="true" />
var listView = element.querySelector(".itemslist").winControl;
if (lastViewState !== viewState) {
if (lastViewState === appViewState.snapped || viewState === appViewState.snapped) {
var handler = function (e) {
listView.removeEventListener("contentanimating", handler, false);
e.preventDefault();
}
listView.addEventListener("contentanimating", handler, false);
var firstVisible = listView.indexOfFirstVisible;
this._initializeLayout(listView, viewState);
if (firstVisible >= 0 && listView.itemDataSource.list.length > 0) {
listView.indexOfFirstVisible = firstVisible;
}
}
}
},

_initializeLayout: function (listView, viewState) {

if (viewState === appViewState.snapped) {
listView.layout = new ui.ListLayout();
} else {
listView.layout = new ui.GridLayout();
}
},

根据 this当 View 状态更改影响 CSS 属性或 CSS 中指定的布局时,您还可以在 msdn page 中使用媒体查询。对于所有其他更改,应使用 onResize。

关于javascript - WinJs 中的 View 状态更改事件在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12274197/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com