2012-04-17 4 views
1

Мне интересно, почему мой индекс выбора изменился, стреляет дважды, когда я нажимаю на элемент в моем списке.SelectionIndexChanged стрельба дважды

Это код, я использую в selectionindexchanged

private void listBoxFolders_SelectionChanged(object sender, SelectionChangedEventArgs e) 
    { 
     // Taking the name of the folder to pass in the parameters 
     if ((Folder)listBoxFolders.SelectedItem != null) 
     { 
      folderTmp = (Folder)listBoxFolders.SelectedItem; 
     } 

     // Connexion to the webservice to get the subfolders and also the files 
     WebClient wc = new WebClient(); 
     wc.DownloadStringCompleted += new DownloadStringCompletedEventHandler(wc_DownloadStringCompleted2); 
     wc.DownloadStringAsync(new Uri("http://clients.uicentric.net/IISHostedCalcService/FilesService.svc/GetFoldersAndFiles?selectedFolder=" + folderTmp.Name)); 
    } 

и это метод, которым стреляет дважды внутри него:

public void wc_DownloadStringCompleted2(object sender, DownloadStringCompletedEventArgs e) 
    { 
     if (e.Error == null) 
     { 
      XDocument xdoc = XDocument.Parse(e.Result, LoadOptions.None); 
      XNamespace aNamespace = XNamespace.Get("http://schemas.datacontract.org/2004/07/System.IO"); 

      try 
      { 

       // Retrieving the subfolders 
       var folders = from query in xdoc.Descendants(aNamespace.GetName("DirectoryInfo")) 
           select new Folder 
           { 
            Name = (string)query.Element("OriginalPath"), 
           }; 

       _lFolders = new ObservableCollection<Folder>(); 

       foreach (Folder f in folders) 
       { 
        LFolders.Add(f); 
       } 

       listBoxFolders.ItemsSource = LFolders; 
       listBoxFolders.DisplayMemberPath = "Name"; 


       // Retrieving the files 
       var files = from query in xdoc.Descendants(aNamespace.GetName("FileInfo")) 
          select new File 
         { 
          Name = (string)query.Element("OriginalPath"), 
         }; 


       _lFiles = new ObservableCollection<File>(); 

       foreach (File f in files) 
       { 

        LFiles.Add(f); 
       } 

       listBoxFiles.ItemsSource = LFiles; 
       listBoxFiles.DisplayMemberPath = "Name"; 
       listBoxFiles.SelectionChanged += new SelectionChangedEventHandler(listBoxFiles_SelectionChanged); 

      } 
      catch { } 

     } 

    } 

ответ

3

Вы перегрузочные источник предмет ListBox при выборе измененное событие. При выполнении операции перезагрузки индекс получает свое значение по умолчанию, т. Е. -1. Возможно, это ваша проблема. Вместо использования измененного события перейдите к событию Tap.

+0

Благодарим за помощь! – Kiwimoisi

Смежные вопросы