从隔离存储中删除后如何更新列表框

时间:2012-04-06 14:24:07

标签: c# windows-phone-7

您好我正在尝试更新我删除文件夹后绑定的列表框但它似乎没有更新,除非我离开页面然后返回任何人都可以帮助我在下面的类项目中使用我的代码,谢谢你的帮助

public partial class Page3 : PhoneApplicationPage
{
    string[] fileNames;
    string[] folderNames;
    private string selectedProject = "";


    private List<Project> projectList = new List<Project>();
    public Page3()
    {
        InitializeComponent();
        showProjects();

    }

    public void showProjects()
    {

        projectList.Clear();
        IsolatedStorageFile isf = IsolatedStorageFile.GetUserStoreForApplication();
        folderNames = isf.GetDirectoryNames("/*.*");

        foreach (var name in folderNames)
        {

            fileNames = isf.GetFileNames(name + "/*.*");
            int frameCount = 0;
            foreach (var nameCount in fileNames)
            {
                frameCount++;

            }



            projectList.Add(new Project(name,frameCount));

        }


        listBoxProjects.ItemsSource = projectList;

    }


    private void listBoxProjects_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {

    }


    public void DeleteDirectory(string directoryName)
    {
        try
        {
            IsolatedStorageFile myIsolatedStorage = IsolatedStorageFile.GetUserStoreForApplication();
            if (!string.IsNullOrEmpty(directoryName) && myIsolatedStorage.DirectoryExists(directoryName))
            {
                myIsolatedStorage.DeleteDirectory(directoryName);
            }
        }
        catch (Exception ex)
        {
            // handle the exception
        }
    }

    private void button1_Click(object sender, RoutedEventArgs e)
    {
        IsolatedStorageFile myIso;
        string folder = textBoxDelete.Text;
        using (myIso = IsolatedStorageFile.GetUserStoreForApplication())
        {

            String[] fileNames = myIso.GetFileNames(folder + "/*.*");

            foreach (var name in fileNames)
            {
                MessageBox.Show(name);
                myIso.DeleteFile(folder + "/" + name);




            }




            myIso.DeleteDirectory(folder);
            showProjects();
        }




    }





}


public class Project
{
    public string ProjectName { get; set; }
    public int FileCount { get; set; }


    public Project(string pName, int fileCount)
    {
        this.ProjectName = pName;
        this.FileCount = fileCount;
    }



}

}

1 个答案:

答案 0 :(得分:1)

您可以尝试先将listbox.Itemsource设置为null,然后使用新集合重置它。

但我建议你让你改变你的名单&lt;&gt;物品到ObservableCollection&lt;&gt;然后,如果您更改集合,更改会自动更新到列表框中,并尝试使用绑定更容易和更清晰的解决方案。

相关问题