2011-07-01 6 views
0

필자는 Pivot을 사용하여 많은 데이터를 표시하는 WP7 Silverlight 앱을 보유하고 있습니다. 먼저 프로젝트를 생성 할 때, 비주얼 스튜디오 템플릿 PAGE_LOADED에 ViewModel.LoadData를 호출 그러나ViewModel.LoadData를 언제 호출해야합니까?

private void MainPage_Loaded(object sender, RoutedEventArgs e) 
{ 
    App.ViewModel.LoadData(); 
} 

on MSDN 당신이 PAGE_LOADED 대신 OnNavigatedTo 사용해야 말한다 페이지가 활성화 될 때 OnNavigatedTo 한 번만 호출되기 때문에, PAGE_LOADED 동안 항목이 페이지의 시각적 트리에 추가 될 때마다 호출됩니다. MSDN 문서는 Silverlight Windows Phone 대신 Silverlight 4 용입니다.

당신은 탐색 요청을 검토하고 표시 페이지를 준비하기 위해 OnNavigatedTo 방법 우선합니다. 예를 들어, 요청한 데이터를로드하고 시각적 인 요소를 사용 또는 사용 중지 할 수 있습니다.

일반적으로 Loaded 이벤트에 대한 처리기 을 만드는 대신 OnNavigatedTo 메서드를 사용합니다. 페이지가 활성화 될 때마다 에 대해서만 한 번만 호출되기 때문에 OnNavigatedTo 메서드가 바람직합니다. 입니다. Silverlight 프레임 워크는 시각적 트리에 요소가 추가 될 때마다 로드 이벤트를 발생 시키며 페이지를 활성화 할 때 이 두 번 이상 나타날 수 있습니다. 페이지가 인 경우에도 OnNavigatedTo 메서드는 각 요청에 대해 에 대해 호출됩니다. 은이 메소드 코드에 을 각 요청마다 실행해야하며, 해당 코드를 생성자에 배치하는 것보다는 이되어야합니다.

Visual Studio 피벗 템플릿이 Page_Loaded에서 ViewModel.LoadData를 호출하는 이유가 있습니까?

+0

"페이지가 시각적 트리에 항목이 추가 될 때마다 Page_Loaded가 호출됩니다." 어떤 참조? –

+0

잘못된 링크를 참조했습니다. OnNavigatedTo에 대한 MSDN의 문서는 http://msdn.microsoft.com/en-us/library/system.windows.controls.page.onnavigatedto(VS.95).aspx – Jim

답변

2

여러분은 LayoutUpdated와 Loaded를 혼동스럽게 생각합니다.
로드 할 때마다 페이지가 표시 될 때마다 한 번 호출해야합니다.

해당 페이지가 구성된 후 특정 페이지로 데이터를로드하는 것은 특정 페이지에 연결된 데이터로 작업하는 간단한 방법입니다. 내 생각에 기본 템플릿은 이해하고 배우기 쉽기 때문에 이것을 사용합니다.

업데이트
참조하는 MSDN 문서는 Page.Loaded입니다. WP7은 Page을 사용하지 않고 대신 PhoneApplicationpage을 사용합니다.
WP7을 1 년 넘게 사용하고 수십 개의 앱을 만들었으므로 WP7 앱에서 여러 번로드 된 Loaded 이벤트를 본 적이 없습니다.

+0

입니다. MSDN의 비평에 관한 업데이트 된 질문을 참조하십시오. – Jim

+0

사실 저도 마찬가지입니다. 잠정적 인 성능 저하를 조심하고 싶습니다. 그래서 Page_Load와 OnNavigatedTo에 코드를 두는 것의 차이점은 무엇입니까? – Jim

+0

@Jim'OnNaigatedTo'는 첫 페이지가 언로드되지 않으면 페이지 사이를 탐색 할 때 페이지가로드 된 후에 여러 번 호출 될 수 있습니다. –

관련 문제