3

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

4

1 回答 1

4

回答我自己的问题,因为我今天碰巧弄明白了。如果您对此问题有更好的解决方案,请提出建议。

在 Metro Style Application 中,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}

}
于 2012-06-15T05:11:19.587 回答