SelectedItem을 null로 설정할 때 _SelectionChanged를 다시 트리거하지 마십시오.

VansFannel

Windows Phone 8을 개발 중이며 단일 선택 목록 상자와이 방법이 있습니다.

private void locationsList_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e)
{
    ARLocation item = (ARLocation)locationsList.SelectedItem;

    NavigationService.Navigate(new Uri("/Views/MapPage.xaml", UriKind.Relative));
    locationsList.SelectedItem = null;
}

내가 할 locationsList.SelectedItem = null;SelectionChanged이벤트가 다시 트리거됩니다.

SelectedItem을 지울 때 이벤트가 트리거되지 않도록하려면 어떻게해야합니까?

Romasz

이벤트 구독 취소를 원하지 않는 한 피할 수 없습니다. 선택한 항목을 변경하는 것이므로 이벤트가 시작됩니다.

이러한 작업을 시도해 볼 수 있습니다. 구독을 취소 한 다음 이벤트를 구독하세요.

locationsList.SelectioChanged -= locationsList_SelectionChanged;
locationsList.SelectedItem = null;
locationsList.SelectioChanged += locationsList_SelectionChanged;

그러나이 경우 검사를 수행하는 것이 더 쉬울 수 있습니다.

private void locationsList_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e)
{
  if ((sender as ListBox).SelectedItem != null)
  {
    ARLocation item = (ARLocation)locationsList.SelectedItem;

    NavigationService.Navigate(new Uri("/Views/MapPage.xaml", UriKind.Relative));
    locationsList.SelectedItem = null;
  }
}

또는 이벤트를 건너 뛰어야 함을 알리기 위해 부울을 제공 할 수 있습니다.

private bool SkipEvent = false;

private void locationsList_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e)
{
  if (SkipEvent) return;
  ARLocation item = (ARLocation)locationsList.SelectedItem;

  NavigationService.Navigate(new Uri("/Views/MapPage.xaml", UriKind.Relative));

  // Skip block:
  try
  {
    SkipEvent = true;
    locationsList.SelectedItem = null;
  }
  finally { SkipEvent = false; }
}

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

다른 파이프 라인에서 'git push'를 사용할 때 Azure Pipeline을 트리거하지 마십시오.

분류에서Dev

Cmake : make install을 실행할 때 프로젝트를 다시 빌드하지 마십시오.

분류에서Dev

Jenkins, 수동으로 빌드 할 때 "post build actions : trigger parameterized build"를 트리거하지 마십시오.

분류에서Dev

GRUB를 설치할 때 자동으로 grub-install을 호출하지 마십시오.

분류에서Dev

다음을 수행 할 때 두 클래스의 두 객체를 bool로 변환하지 마십시오. if (a! = b)

분류에서Dev

bash에서 mysql 명령을 실행할 때 특정 오류 메시지를 표시하지 마십시오.

분류에서Dev

bash에서 mysql 명령을 실행할 때 특정 오류 메시지를 표시하지 마십시오.

분류에서Dev

시작할 때 setxkbmap 환경 설정을 지정하십시오.

분류에서Dev

시작할 때 setxkbmap 환경 설정을 지정하십시오.

분류에서Dev

다시 Parse에서 정보를로드하지 마십시오.

분류에서Dev

패키지를 종속성으로 설치할 때 사후 설치를 실행하지 마십시오.

분류에서Dev

가능할 때마다 반복자를 목록으로 변환하지 마십시오.

분류에서Dev

버튼을 클릭 할 때까지 html의 일부를로드하지 마십시오.

분류에서Dev

리턴 키를 누를 때마다 날짜 시간을 인쇄하십시오.

분류에서Dev

위치를 기억하면서 js-beautify를 사용할 때 마크를 설정하지 마십시오.

분류에서Dev

뒤로 눌렀을 때 서비스를 중지하지 마십시오.

분류에서Dev

새 런처를 클릭 할 때 터미널을 실행하지 마십시오

분류에서Dev

합계를 사용할 때 그룹을 사용하지 마십시오.

분류에서Dev

목록을 인쇄 할 때 연결 번호를 사용하지 마십시오.

분류에서Dev

표시등이 녹색으로 설정 될 때까지 기다렸다가 기능을 실행하지 마십시오.

분류에서Dev

notepad ++를 설치할 때 "% APPDATA %를 사용하지 마십시오"는 무엇을 의미합니까?

분류에서Dev

변수 재로드 스크립트를 다시 할당하지 마십시오.

분류에서Dev

React.s로 콘텐츠를 클릭 할 때 모달을 닫지 마십시오.

분류에서Dev

Java 컴파일러를 수행 할 때 입력을받지 마십시오.

분류에서Dev

AngularJS에서 문자열을 연결할 때 null을 표시하지 마십시오.

분류에서Dev

반복 할 때마다 조건을 만족하는 ID를 선택하십시오.

분류에서Dev

일반 마크 다운으로 변환 할 때 rmarkdown 문서에서 방정식을 렌더링하지 마십시오.

분류에서Dev

파이썬에서 로그가 회전 할 때마다 조치를 취하십시오.

분류에서Dev

값을 입력 할 때 텍스트 상자 높이를 확대하지 마십시오.

Related 관련 기사

  1. 1

    다른 파이프 라인에서 'git push'를 사용할 때 Azure Pipeline을 트리거하지 마십시오.

  2. 2

    Cmake : make install을 실행할 때 프로젝트를 다시 빌드하지 마십시오.

  3. 3

    Jenkins, 수동으로 빌드 할 때 "post build actions : trigger parameterized build"를 트리거하지 마십시오.

  4. 4

    GRUB를 설치할 때 자동으로 grub-install을 호출하지 마십시오.

  5. 5

    다음을 수행 할 때 두 클래스의 두 객체를 bool로 변환하지 마십시오. if (a! = b)

  6. 6

    bash에서 mysql 명령을 실행할 때 특정 오류 메시지를 표시하지 마십시오.

  7. 7

    bash에서 mysql 명령을 실행할 때 특정 오류 메시지를 표시하지 마십시오.

  8. 8

    시작할 때 setxkbmap 환경 설정을 지정하십시오.

  9. 9

    시작할 때 setxkbmap 환경 설정을 지정하십시오.

  10. 10

    다시 Parse에서 정보를로드하지 마십시오.

  11. 11

    패키지를 종속성으로 설치할 때 사후 설치를 실행하지 마십시오.

  12. 12

    가능할 때마다 반복자를 목록으로 변환하지 마십시오.

  13. 13

    버튼을 클릭 할 때까지 html의 일부를로드하지 마십시오.

  14. 14

    리턴 키를 누를 때마다 날짜 시간을 인쇄하십시오.

  15. 15

    위치를 기억하면서 js-beautify를 사용할 때 마크를 설정하지 마십시오.

  16. 16

    뒤로 눌렀을 때 서비스를 중지하지 마십시오.

  17. 17

    새 런처를 클릭 할 때 터미널을 실행하지 마십시오

  18. 18

    합계를 사용할 때 그룹을 사용하지 마십시오.

  19. 19

    목록을 인쇄 할 때 연결 번호를 사용하지 마십시오.

  20. 20

    표시등이 녹색으로 설정 될 때까지 기다렸다가 기능을 실행하지 마십시오.

  21. 21

    notepad ++를 설치할 때 "% APPDATA %를 사용하지 마십시오"는 무엇을 의미합니까?

  22. 22

    변수 재로드 스크립트를 다시 할당하지 마십시오.

  23. 23

    React.s로 콘텐츠를 클릭 할 때 모달을 닫지 마십시오.

  24. 24

    Java 컴파일러를 수행 할 때 입력을받지 마십시오.

  25. 25

    AngularJS에서 문자열을 연결할 때 null을 표시하지 마십시오.

  26. 26

    반복 할 때마다 조건을 만족하는 ID를 선택하십시오.

  27. 27

    일반 마크 다운으로 변환 할 때 rmarkdown 문서에서 방정식을 렌더링하지 마십시오.

  28. 28

    파이썬에서 로그가 회전 할 때마다 조치를 취하십시오.

  29. 29

    값을 입력 할 때 텍스트 상자 높이를 확대하지 마십시오.

뜨겁다태그

보관