3
我有一個列表視圖。默認情況下,所有項目啓用itemInvoke
和single-selection
。但是現在,我想爲禁用selection
和itemInvoke
(包括事件和動畫),其中一個特定項目的id爲「disableMe」。有沒有辦法做到這一點?或者是否可以禁用整個組的事件(而不是整個列表視圖)?爲列表視圖中的特定項禁用選擇和itemInvoke事件
我有一個列表視圖。默認情況下,所有項目啓用itemInvoke
和single-selection
。但是現在,我想爲禁用selection
和itemInvoke
(包括事件和動畫),其中一個特定項目的id爲「disableMe」。有沒有辦法做到這一點?或者是否可以禁用整個組的事件(而不是整個列表視圖)?爲列表視圖中的特定項禁用選擇和itemInvoke事件
回答我自己的問題,因爲我今天碰巧找到了答案。如果您對此問題有更好的解決方案,請諮詢。
在Metro風格應用程序中,ListView控件中的選擇通常可以通過Right-Click
用鼠標或通過觸摸的小「拖動」/「滑動」來觸發。要禁用觸摸選擇,您需要覆蓋該特定項目的MSPointerDown
事件處理程序。要禁用「右鍵單擊」選擇,您需要覆蓋該特定項目的oncontextmenu
事件。
如果在Javascript
創建itemTemplate
:
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}
}
所以我動態選擇模板: '元素= document.querySelector( 「inputTemplate。」);' 然後此後不久渲染它到一個新的容器: 'var container = document.createElement(「div」);' 'element.winControl.render(currentItem.data,container);' 然後再測試項目是否是確定的鍵入和做wh在你寫下,第一次工作。謝謝 –