2012-04-17 12 views
0

現時点では、ローカルデータベースを使用するWindows PhoneにSilverlightアプリケーションがあります。基本的にはlistBoxが生成され、保存された 'クライアント'の現在のリストが表示されます。今私は、クライアントの詳細の1つを編集させることができるようにしたいと思います。このために、ユーザーがメインページからボタンをクリックするたびに読み込まれる新しいページを作成しました。このイベントは、次のとおりです。Windowsの他のクラスからオブジェクトを取得する

上記の説明では、どのクライアントが選択されているかを確認し、selectedClientとして保存してEditClientページに移動します。

私は、次の方法持って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を取得:

mainPage.ClientItems.Remove(clientForDelete); 

selectedClientがnullであるためですが。ヌルでないオブジェクトを他のクラスから取得するにはどうすればよいですか?なぜなら、ユーザーが操作をキャンセルすることを決定した場合にのみ、メインクラスから項目を削除したくないからです。また、ページが読み込まれたときにそのクライアントの詳細を表示したい、私はオブジェクトを取得するために管理する場合、私は方法を知っている:)。おかげ

答えて

1

あなたはクエリパラメータとして他のページへのクライアントを渡すことができます。

NavigationService.Navigate(
     new Uri("/MainPage.xaml?client="+clientId, UriKind.Relative)); 

は、その後、あなたのメインページにOnNavigatedTo()は、クライアントを取得:

if (this.NavigationContext.QueryString.ContainsKey("client")) 
      client = this.NavigationContext.QueryString["client"]; 
関連する問題