2012-05-11 2 views
3

나는 목록보기를 가지고 있습니다. 기본적으로 모든 항목에는 itemInvokesingle-selection이 사용됩니다. 하지만 이제는 에 대해 및 itemInvoke (이벤트 및 애니메이션 모두)을 비활성화하고 id가 "disableMe"인 특정 항목을 비활성화하고 싶습니다. 그것을 할 수있는 방법이 있습니까? 또는 전체 목록 (전체 목록보기가 아님)에 대해 이벤트를 비활성화 할 수 있습니까?목록보기에서 특정 항목에 대한 선택 및 itemInvoke 이벤트 사용 안 함

답변

4

나는 오늘 그것을 알아 냈기 때문에 내 자신의 질문에 답합니다. 이 문제에 대한 더 나은 해결책이 있다면 조언을 구하십시오.

Metro 스타일 응용 프로그램에서 ListView 컨트롤의 선택은 일반적으로 Right-Click에 의해 마우스로 또는 터치로 작은 '끌기'/ '스 와이프'에 의해 트리거 될 수 있습니다. 터치 선택을 사용하지 않으려면 해당 특정 항목에 대한 MSPointerDown 이벤트 처리기를 덮어 써야합니다. '오른쪽 클릭'선택을 사용하지 않으려면 해당 특정 항목에 대해 oncontextmenu 이벤트를 덮어 써야합니다. 그 후 곧 다음` 및 렌더링, `요소 = document.querySelector ("inputTemplate합니다.") :

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

그래서 내가 동적 템플릿을 선택 해요 :

당신은 JavascriptitemTemplate를 작성하는 경우 new container : var container = document.createElement ("div"); ' 'element.winControl.render (currentItem.data, container); ' 그리고 항목이 특정 항목인지 나중에 테스트합니다. 유형을 입력하고 wh 당신이 썼을 때, 처음으로 일했습니다. 감사 –