2012-04-17 2 views
0

현재 로컬 데이터베이스를 사용하는 Windows Phone에 Silverlight 응용 프로그램이 있습니다. 기본적으로 listBox는 저장된 'clients'의 현재 목록을 표시하기 위해 생성되며 제대로 작동합니다. 이제 사용자가 클라이언트 세부 정보 중 하나를 편집 할 수있게하려고합니다. 이를 위해 사용자가 메인 페이지에서 버튼을 클릭 할 때마다로드되는 새 페이지를 만들었습니다. 이벤트는 다음과 같습니다.Windows의 다른 클래스에서 개체 검색 전화

위의 코드는 선택된 클라이언트를 선택하고 selectedClient로 저장 한 다음 EditClient 페이지로 이동합니다. 그것을 실행하려고 할 때이 코드를 실행하면

public void saveButton_Click(object sender, RoutedEventArgs e) 
    { 
     //Get the client that is selected 

     ClientItem clientForDelete = mainPage.selectedClient; 
     mainPage.ClientItems.Remove(clientForDelete); 
     mainPage.clientDB.ClientItems.DeleteOnSubmit(clientForDelete); 

     // Create a new client based on the text boxes 
     ClientItem newClient = new ClientItem { ClientName = newClientNameTextBox.Text, ClientSurname = newClientSurnameTextBox.Text, ClientCompany = newClientCompanyTextBox.Text, ClientPhone = int.Parse(newClientPhoneTextBox.Text) }; 

     // Add new client to the database 
     mainPage.clientDB.ClientItems.InsertOnSubmit(newClient); 

     // Sava database changes 
     mainPage.clientDB.SubmitChanges(); 

     // Go to main screen 
     NavigationService.Navigate(new Uri("/MainPage.xaml", UriKind.Relative)); 
    } 

내가 NullReferenceException이 얻을 : 나는 다음과 같은 방법을 가지고있는 EditClient 클래스에서

mainPage.ClientItems.Remove(clientForDelete); 

이것은 selectedClient가 null 때문에 . Null이 아닌 다른 클래스에서 객체를 가져올 수 있습니까? 사용자가 작업 취소를 결정한 경우에만 주 클래스에서 항목을 삭제하고 싶지 않기 때문입니다. 또한 페이지를로드 할 때 해당 클라이언트의 세부 정보를 표시하고 싶습니다. 개체를 가져올 수있는 방법을 알고 있습니다. :) 덕분에

당신은 쿼리 매개 변수로 다른 페이지에 클라이언트를 전달할 수

답변

1

는 :

if (this.NavigationContext.QueryString.ContainsKey("client")) 
      client = this.NavigationContext.QueryString["client"]; 
: 당신의 MainPage OnNavigatedTo()에서 다음
NavigationService.Navigate(
     new Uri("/MainPage.xaml?client="+clientId, UriKind.Relative)); 

클라이언트를 검색