目前我在 Windows Phone 中有一个使用本地数据库的 Silverlight 应用程序。基本上会生成一个 listBox 来显示存储的“客户”的当前列表,它工作正常。现在我希望能够让用户编辑客户的详细信息之一。为此,我创建了一个新页面,每当用户单击主页上的按钮时都会加载该页面。事件如下:
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 为空。如何从其他类获取对象而不使其为空?因为我不想从主类中删除该项目,以防万一用户决定取消操作。此外,我想在加载页面时显示该客户端的详细信息,如果我设法获取对象,我知道该怎么做:)。谢谢