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