코레일 만드는도중 앱이 꺼졌다 이유를 보니
MessageBox가 띄워져 있는 상태에서 ok를 누르면 프로세서를 타고
cancel을 누르면 navivation.goback()을 하게 되어 잇는데
메세지 박스가 띄워져 있는 상태에서 tombtone을 하게 되면
cancel 된 분기문으로 가게 되어 있는데
거기에서 navigation.goback()부분에서 에러가 나는거였다.
그래서 혹시 goback()을 하기전에 이걸 체크하는게 있나 싶었는데 없었다. cangoback이거는 딴조건인듯
해결법은
bool _isTombstone; //톰스톤인지 아닌지 구분
protected override void OnNavigatedFrom(System.Windows.Navigation.NavigationEventArgs e) { base.OnNavigatedFrom(e); _isTombstone = true; }
protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
{
base.OnNavigatedTo(e);
_isTombstone = false;
}
if (MessageBox.Show(msg, string.Empty, MessageBoxButton.OKCancel) == MessageBoxResult.OK) { XmlGroupManager xgmInside = new XmlGroupManager(); xgmInside.GetData(um.GetReserveCancelUrl(StaticManager.JrnyInfoModelSelectedItem)); xgmInside.xdmCE.CompleteGroupDataEvent += new EventHandler<Events.XmlGroupDataEventArgs>(xdmCE_CompleteGroupDataEvent); xgmInside.xdmCE.errorEvent += new EventHandler<Events.XmlDataEventArgs>(xdmCE_errorEvent); } else { if (_isTombstone == false) { (Application.Current.RootVisual as PhoneApplicationFrame).GoBack(); } }
이런식으로 해결했다. NavigatedFrom할때 이것이 톰스톤인지 아닌지를 구분해서 goback을 할지 안할지를 구분했다
그리고 만약 저런식이 아닌
if (e.Error != null) { (Application.Current.RootVisual as PhoneApplicationFrame).GoBack(); MessageBox.Show("네트워크를 확인해 주세요."); return; }
메세지 박스를 띄운후 goback은 절대 하지 말고
먼저 뒤로 가고 메세지 박스를 띄우는게 낫다.
'Windows Phone 7' 카테고리의 다른 글
[wp7] ConverterParameter 사용하기 (0) | 2012.02.23 |
---|---|
[wp7] 초성 검색 만들기 (2) | 2012.02.21 |
[wp7] Group Listbox 만들기 (0) | 2012.02.15 |
[wp7] Textbox간의 AutoFoucs 를 쉽게 등록 하자 (0) | 2012.02.08 |
[wp7] URLDiffer 프로그램 (0) | 2012.02.08 |