나는 목록보기를 가지고 있습니다. 기본적으로 모든 항목에는 itemInvoke
및 single-selection
이 사용됩니다. 하지만 이제는 에 대해 및 itemInvoke
(이벤트 및 애니메이션 모두)을 비활성화하고 id가 "disableMe"인 특정 항목을 비활성화하고 싶습니다. 그것을 할 수있는 방법이 있습니까? 또는 전체 목록 (전체 목록보기가 아님)에 대해 이벤트를 비활성화 할 수 있습니까?목록보기에서 특정 항목에 대한 선택 및 itemInvoke 이벤트 사용 안 함
3
A
답변
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}
}
그래서 내가 동적 템플릿을 선택 해요 :
당신은
Javascript
에itemTemplate
를 작성하는 경우 new container : var container = document.createElement ("div"); ' 'element.winControl.render (currentItem.data, container); ' 그리고 항목이 특정 항목인지 나중에 테스트합니다. 유형을 입력하고 wh 당신이 썼을 때, 처음으로 일했습니다. 감사 –