如何从Windows Phone 8 App C#

时间:2016-03-07 17:44:42

标签: c# windows-phone-8

当用户点击列表中的特定项目时,新页面打开并在那里他可以看到特定项目的完整详细信息。如果他认为他不想要,他可以删除特定项目。我的问题是文件没有从列表中删除。

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");
    }
}

2 个答案:

答案 0 :(得分:0)

在DeleteFile事件处理程序中,您应该删除该项,然后将其重新序列化回CardItemList文件

答案 1 :(得分:0)

您需要与您的视图(即ListBox)进行通信,确认某些内容已发生变化,因此需要更新/重新绘制其内容。

不幸的是,通用List<T>不会自动为您执行此操作。您需要的是使用ObservableCollection<T>代替。

MSDN: ObservableCollection Class,请注意这部分描述:

  

表示动态数据集合,在添加,删除项目或刷新整个列表时提供通知。

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