使用vs2012 RC中的“网格”示例,当您处于捕捉视图时,网格将变为ListView。在我的应用程序中,我不希望在snapview中选择项目时调用itemInvoked页面方法。我也不希望项目上的动画让用户认为会发生某些事情。我知道如何禁用iteminvoked(见下文),但不知道在选择(调用)项目时如何摆脱动画。
itemInvoked: function (args) {
if (appView.value != appViewState.snapped) {
var listView = document.getElementById("groupdetaillistId").winControl;
答案 0 :(得分:3)
您可以更改以下WinJS.UI.ListView属性,它将使这些项目无法点击并删除“点击”动画:
selectionMode: 'none'
tapBehavior: 'none'
swipeBehavior:'none'
http://msdn.microsoft.com/en-us/library/windows/apps/br211851.aspx
http://msdn.microsoft.com/en-us/library/windows/apps/hh700733.aspx
http://msdn.microsoft.com/en-us/library/windows/apps/hh700730.aspx
答案 1 :(得分:2)
问题是WinJS实际上使用动画做了一些内联样式。没有办法使用CSS禁用它。但是,我们可以使用JavaScript的强大功能来重置函数的功能。
window.addEventListener("resize", handleResize);
var origFunc = WinJS.UI._SelectionMode.prototype.togglePressed;
function handleResize(evt) {
var currentViewState = Windows.UI.ViewManagement.ApplicationView.value;
if (currentViewState === 2) {
WinJS.UI._SelectionMode.prototype.togglePressed = function (add) {};
}
else {
WinJS.UI._SelectionMode.prototype.togglePressed = origFunc;
}
}
找到此链接后,当我看到您的问题时,这就是我的解决方案。 http://social.msdn.microsoft.com/Forums/en-US/winappswithhtml5/thread/847cefe9-30f6-4f05-96ad-26ece31b77c5
所有这些代码都在全球空间。 注册调整大小事件
window.addEventListener("resize", handleResize);
将原始函数存储在变量
中var origFunc = WinJS.UI._SelectionMode.prototype.togglePressed;
处理调整大小事件
function handleResize(evt) {
获取当前视图状态
var currentViewState = Windows.UI.ViewManagement.ApplicationView.value;
如果我们处于捕捉模式,请将该功能设置为空
if (currentViewState === 2) {
WinJS.UI._SelectionMode.prototype.togglePressed = function (add) {};
}
否则,将其设置回WinJS版本
else {
WinJS.UI._SelectionMode.prototype.togglePressed = origFunc;
}
}
希望这有帮助。
答案 2 :(得分:1)
B Z在正确的道路上。 ListView具有处理此问题的本机机制,不需要hacky Javascript。我会赞成B Z并且投票支持Chad Carter,但我没有任何声望点。我想这就是你作为一个沉默的,未订阅的StackOverflow观察者十年所得到的:/