使用WinJS.UI.ListView,如何在snapview中禁用单击动画

时间:2012-07-25 22:48:56

标签: javascript windows-runtime

使用vs2012 RC中的“网格”示例,当您处于捕捉视图时,网格将变为ListView。在我的应用程序中,我不希望在snapview中选择项目时调用itemInvoked页面方法。我也不希望项目上的动画让用户认为会发生某些事情。我知道如何禁用iteminvoked(见下文),但不知道在选择(调用)项目时如何摆脱动画。

   itemInvoked: function (args) {
        if (appView.value != appViewState.snapped) {
            var listView = document.getElementById("groupdetaillistId").winControl;

3 个答案:

答案 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观察者十年所得到的:/