2016-03-07 25 views
1

当用户点击列表中的特定项目时,将打开新页面,并在此处可以看到特定项目的完整详细信息。如果他认为他不想要那个,他可以删除特定的项目。我的问题是文件没有从列表中删除。如何从Windows Phone 8应用程序列表中删除项目应用程序C#

public partial class DetailsPage : PhoneApplicationPage 
{ 
    SavedData prkdata = new SavedData(); 
    SavedDataList parkinglistobj = new SavedDataList(); 
    IsolatedStorageFile Settings = IsolatedStorageFile.GetUserStoreForApplication(); 
    int index; 

    public DetailsPage() 
    { 
     InitializeComponent();   
     //this.Loaded += MainPage_Loaded; 
    }   

    protected override void OnNavigatedTo(NavigationEventArgs e) 
    {    
     string selectedIndex = ""; 

     if (NavigationContext.QueryString.TryGetValue("selectedItem", out selectedIndex)) 
     { 
      index = int.Parse(selectedIndex); 
      try 
      { 
       parkinglistobj.Clear(); 

       if (Settings.FileExists("CardItemList")) 
       { 
        using (IsolatedStorageFileStream fileStream = Settings.OpenFile("CardItemList", FileMode.Open)) 
        { 
         DataContractSerializer serializer = new DataContractSerializer(typeof(SavedDataList)); 
         parkinglistobj = (SavedDataList)serializer.ReadObject(fileStream); 
        } 
       } 

       ParkListBox.ItemsSource = parkinglistobj.Where(i => i.ID == index).ToList(); 

       //String itemselected = parkinglistobj.Where(i => i.ID == index).Select(i.CardName).ToString(); 
       //MessageBox.Show(itemselected); 
      } 
      catch 
      { 
       // 
      } 
     } 
    } 

    private void DeleteFile(object sender, EventArgs e) 
    { 
     //ParkListBox.SelectedItem = parkinglistobj.Select(i => i.ID == index); 
     //SavedData item = ParkListBox.DataContext as SavedData; 
     SavedData item = parkinglistobj.Select(i => i.ID == index) as SavedData; 
     //SavedData item = ParkListBox.SelectedItem as SavedData; 
     parkinglistobj.Remove(item); 
     MessageBox.Show("Deleted Successfully"); 
    } 
} 
+1

从删除空的“catch”块开始 - 它吞噬发生的任何异常,所以如果出现错误或没有错误,您就没有ide。 –

+1

此外,你的'DeleteFile'方法的肉被注释掉了,所以它没有做任何事情也就不足为奇了。 –

+0

其实我正常试过。但是,在发布在这个博客中,我评论它...显示所有我尝试过多少种方式,尝试方法是尝试显示内容的其他功能。内容正在显示,但并未删除。 @DStanley – user3077282

回答

0

在的DeleteFile事件处理程序,你应该删除的项,然后重新连载回给CardItemList文件

+0

我是新开发者@Chairag Shah你能否清楚地告诉我如何重新进行回退? – user3077282

0

你需要回去传达给你的视图(这是你的ListBox)有什么东西已更改,因此需要更新/重绘其内容。

不幸的是,一个通用的List<T>不会自动为你做这个。您需要的是使用ObservableCollection<T>

MSDN: ObservableCollection Class,要注意的这一段描写:

表示一个动态数据采集,提供通知,当项目将添加,删除,或当整个列表被刷新。

如果您正确使用它,集合的任何添加和删除将导致ListBox重绘本身。

相关问题