2012-04-15 2 views
0

Windows 8 앱 (C#/XAML)을 만들고 페이지간에 이동하기 위해 Frame.Navigate() 속성을 사용하고 있습니다. 각 페이지에는 해당 데이터를 페이지에서 새로 고치고 DataContext 속성을 설정하는 AppBar 아이콘이 있습니다. 그러면 버튼이 눌러 진 후에 UI가 업데이트됩니다.Win8 Metro 앱에서 뒤로 버튼을 누른 후 DataContext를 변경합니다.

다른 페이지로 이동했을 때 나타나는 문제는 이전 페이지로 돌아가려면 뒤로 화살표를 클릭하십시오.

OnNavigatedTo(NavigationEventArgs e) 메서드를 실행하면 (뒤로 화살표를 클릭 한 후) e.Parameter 값이 이전 값입니다 (새로 고침 버튼을 클릭하기 전에 DataContext이 업데이트되었습니다).

Frame.Navigate(typeof(PageTypeName), paramValue);을 사용하는 것 외에 다른 방법으로 매개 변수 값을 업데이트하는 방법을 모르지만 탐색 동작을 시작하지 않습니다.

제 질문은 두 가지입니다. 내가 페이지로 돌아 가면, 내가 설정 한 값이 OnNavigatedTo(NavigationEventArgs e) 방법 e.Parameter를 통해 노출되도록

  1. 어떻게 DataContext 변화를 지속 할 수 있습니다.

  2. Win8 Apps의 탐색 수명주기를 설명하는 참조 메트릭이 있습니까?

... 아니면 다른 방식으로해야합니까?

+0

데이터 인터페이스가 아닌 데이터를 변경하는 이유는 무엇입니까? –

+0

리바 인하면 데이터가 완전히 다를 수 있습니다. DataContext를 새로운 데이터 바인딩으로 바꾸는 것이 아닙니다. –

+0

데이터의 구조는 변경되지 않고 값 자체 만 변경됩니다. DataContext는 구조 (예 : 모델)를 나타내고 데이터는 변경되는 항목입니다. –

답변

0

해결책을 찾았습니다.

NavigationCacheMode = Windows.UI.Xaml.Navigation.NavigationCacheMode.Required;

이는 항상 내 페이지의 이전 인스턴스를 캐시, 나는 다시로 이동하면 새로 만들 안된다는 프레임을 알려줍니다.

이렇게하면 내 새 DataContext 값이 페이지로 돌아 가면 덮어 쓰지 않습니다.

+0

은 매력처럼 작동합니다. – Tilak

관련 문제