2

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

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

3 回答 3

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

于 2012-11-30T13:22:14.640 回答
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;
    }
}

希望这可以帮助。

于 2012-07-27T06:58:51.230 回答
1

BZ 是在正确的道路上。ListView 具有处理此问题的本机机制,不需要 hacky Javascript。我会支持 BZ 而反对 Chad Carter,但我没有任何声望点。我想这就是你作为 StackOverflow 的一个沉默的、非订阅的观察者十年来得到的:/

于 2013-05-15T07:44:38.780 回答