2012-04-06 3 views
0

こんにちは私はフォルダを削除した後にバインドされたリストボックスを更新しようとしていますが、以下のクラスのプロジェクトで、あなたの助けに感謝します。隔離されたストレージから削除した後リストボックスを更新する方法

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

あなたは最初のヌルし、新しいコレクションでそれをリセットするためにlistbox.Itemsourceを設定しようとすることができます。

しかし、リスト<>アイテムをObservableCollection <に変更することをお勧めします。コレクションを変更すると、リストボックス内の変更が自動的に更新され、バインディングをはるかに簡単でクリーンな方法で試してみてください。

+0

ObservableCollectionがうまくいきました。私はプロジェクト全体を通してこれを使用していましたが、このリストを使用することにしました。 –

+0

@Steven_Mあなたは時々私と共に起こります。 – BigL

関連する問題