2012-05-11 27 views
3

我有一個列表視圖。默認情況下,所有項目啓用itemInvokesingle-selection。但是現在,我想爲禁用selectionitemInvoke(包括事件和動畫),其中一個特定項目的id爲「disableMe」。有沒有辦法做到這一點?或者是否可以禁用整個組的事件(而不是整個列表視圖)?爲列表視圖中的特定項禁用選擇和itemInvoke事件

回答

4

回答我自己的問題,因爲我今天碰巧找到了答案。如果您對此問題有更好的解決方案,請諮詢。

在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} 

} 
+0

所以我動態選擇模板: '元素= document.querySelector( 「inputTemplate。」);' 然後此後不久渲染它到一個新的容器: 'var container = document.createElement(「div」);' 'element.winControl.render(currentItem.data,container);' 然後再測試項目是否是確定的鍵入和做wh在你寫下,第一次工作。謝謝 –

相關問題