0
目前,我在Windows Phone中使用了本地數據庫中的Silverlight應用程序。基本上生成一個listBox來顯示存儲的'clients'的當前列表,這可以正常工作。現在我希望能夠讓用戶編輯客戶的詳細信息之一。爲此,我創建了一個新頁面,只要用戶點擊主頁面上的按鈕就會加載該頁面。事件如下:從windows中的其他類中檢索對象
public ClientItem selectedClient;
public void Edit_Click(object sender, EventArgs e)
{
if (clientItemsListBox.SelectedItem != null)
{
selectedClient = clientItemsListBox.SelectedItem as ClientItem;
NavigationService.Navigate(new Uri("/EditClient.xaml", UriKind.Relative));
}
}
以上只是檢查選擇哪個客戶端,將其存儲爲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爲空。我怎樣才能從其他類的對象,而不是爲空?因爲我不想從主類中刪除項目,以防用戶決定取消操作。另外,我想在加載頁面時顯示該客戶端的詳細信息,如果設法獲取對象,我知道該怎麼做。感謝