C# 如何从Windows Phone 8应用程序C的列表中删除项目#

C# 如何从Windows Phone 8应用程序C的列表中删除项目#,c#,windows-phone-8,C#,Windows Phone 8,当用户点击列表中的特定项目时,新页面将打开,在那里他可以看到特定项目的完整详细信息。如果他认为自己不想删除某一项,他可以删除该项。我的问题是文件没有从列表中删除 public partial class DetailsPage : PhoneApplicationPage { SavedData prkdata = new SavedData(); SavedDataList parkinglistobj = new SavedDataList(); IsolatedSt

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

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

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

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

您需要与视图(即您的
列表框
)通信某些内容已更改,因此需要更新/重画其内容

不幸的是,通用
列表不会自动为您执行此操作。您需要的是使用
可观察收集

,请注意说明的这一部分:

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


如果正确使用,对集合的任何添加和删除都将导致列表框自身重新绘制。

您需要向视图(即您的
列表框
)反馈某些内容已更改,因此需要更新/重新绘制其内容

不幸的是,通用
列表不会自动为您执行此操作。您需要的是使用
可观察收集

,请注意说明的这一部分:

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


如果正确使用它,则对集合的任何添加和删除都将导致列表框自身重新绘制。

首先删除空的
catch
块-它会吞下发生的任何异常,因此无论是否有错误,您都没有IDE。此外,你的
DeleteFile
方法的内容被注释掉了,所以它什么都不做也不奇怪。实际上我正常地尝试过。但是当我在这个博客上发表评论的时候。。。要显示我尝试了多少种方法,Try方法位于另一个尝试显示内容的函数中。内容正在显示,但未删除@dstanley从删除空的
catch
块开始-它会吞下发生的任何异常,因此如果有错误或没有错误,您就没有IDE。此外,您的
DeleteFile
方法的内容被注释掉,因此它不做任何事情也就不足为奇了。实际上,我正常尝试过。但是当我在这个博客上发表评论的时候。。。要显示我尝试了多少种方法,Try方法位于另一个尝试显示内容的函数中。内容正在显示,但未删除@DStanleyI是新开发者@Chairag-Shah你能清楚地告诉我如何重新研究if吗?我是新开发者@Chairag-Shah你能清楚地告诉我如何重新研究if吗?