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