禁用listview中特定项的选择和itemInvoke事件

时间:2012-05-11 17:05:56

标签: windows-8 windows-runtime winjs

我有一个列表视图。默认情况下,所有项都启用了itemInvokesingle-selection。但是现在,我想为ID为“disableMe”的一个特定项禁用selectionitemInvoke(事件和动画)。有办法吗?或者是否可以为整个组(而不是整个列表视图)禁用事件。?

1 个答案:

答案 0 :(得分:4)

回答我自己的问题,因为我今天偶然发现了这个问题。如果您有更好的解决方案,请提供建议。

在Metro Style应用程序中,ListView控件中的选择通常可以通过鼠标Right-Click或触摸时的小“拖动”/“滑动”来触发。要禁用触摸选择,您需要覆盖该特定项目的MSPointerDown事件处理程序。要禁用“右键单击”选项,您需要覆盖该特定项目的oncontextmenu事件。

如果您要在itemTemplate中创建Javascript

function listViewItemTemplate(item) {
    // data has boolean properties called 'doNotSelectMe' and 'doNotInvokeMe'
    var data = item.data._value;

    var itemElement = document.createElement('div');
    var itemElement.id = 'testElement';

    if (data.doNotSelectMe) {
        // disable mouse selection
        itemElement.oncontextmenu = function (e) { e.stopPropagation(); };
        // disable touch selection
        itemElement.addEventListener('MSPointerDown', function (e) {
                                          e.stopPropagation();
                                     });
    }

    if (data.doNotInvokeMe) {
        //disable item invoke event
        itemElement.onclick = function (e) { e.stopPropagation(); };
    }

    return {element: itemElement}

}