2012-03-06 72 views
0

基本上我試圖從手機中拉出聯繫人並在Listpicker控件中爲我的應用中的某個功能顯示它們。我有兩個Listpickers,一個用於聯繫人列表的名稱,另一個顯示所選聯繫人的電話號碼列表。無法顯示Wp7 Listpicker控件中的選定項目

這裏是我的代碼:

//Declarations 

ContactsSearchEventArgs e1; 
String SelectedName; 
String SelectedNumber; 
List<string> contacts = new List<string>(); 
List<string> phnum = new List<string>(); 


public AddressBook() // Constructor 
    { 
     InitializeComponent(); 
     Contacts contacts = new Contacts(); 
     contacts.SearchCompleted += new EventHandler<ContactsSearchEventArgs>(contacts_SearchCompleted); 
     contacts.SearchAsync(string.Empty,FilterKind.None,null);    
    } 

void contacts_SearchCompleted(object sender, ContactsSearchEventArgs e) 
    {   
     e1 = e; 

      foreach (var result in e.Results) 
      {   

       if (result.PhoneNumbers.Count() != 0) 
       { 

        contacts.Add(result.DisplayName.ToString()); 
       }      

      } 

     Namelist.ItemsSource = contacts; 

    } 

private void Namelist_SelectionChanged(object sender, SelectionChangedEventArgs e) 
    { 
     SelectedName = (sender as ListPicker).SelectedItem.ToString(); 
     phnum.Clear();    
     foreach (var result in e1.Results) 
     { 
      if (SelectedName == result.DisplayName) 
      { 

       phnum.Add(result.PhoneNumbers.FirstOrDefault().ToString()); 

      } 
     } 

     Numbers.ItemsSource = phnum;    
    } 

private void Numbers_SelectionChanged(object sender, SelectionChangedEventArgs e) 
    { 

     SelectedNumber = (sender as ListPicker).SelectedItem.ToString(); 

    } 

我能夠與PHONENUMBERS用於在Listpicker背景所選擇的名稱來填充Numberlist,但數量沒有出現在前面了。我認爲Numbers_SelectionChanged()事件只在頁面加載時被調用一次,並且當我更改聯繫人列表時沒有看到它觸發。任何人都知道哪裏出錯了?

回答

1

如果更改 List<string>ObservableCollection<string> 這應該工作。

此外,您只需要在Xaml或您的構造函數中設置一次ItemSource。

但是,您可能會遇到2011年11月工具包和ListPicker的另一個問題。

查看更多in thread

+0

感謝您的回覆。我也嘗試過使用ObservableCollection ..但它仍然是一樣的。另外我不認爲這是2011年11月的Listpicker問題,因爲它在其他頁面中工作正常。 – Sri 2012-03-06 20:51:00

+0

這不起作用,因爲他沒有在ItemsSource和集合之間創建綁定。 – AlexDrenea 2012-03-06 21:18:39

1
private void Namelist_SelectionChanged(object sender, SelectionChangedEventArgs e) 
{ 
    SelectedName = (sender as ListPicker).SelectedItem.ToString(); 
    phnum = new List<string>(); // Changed instead of phnum.Clear()    
    foreach (var result in e1.Results) 
    { 
     if (SelectedName == result.DisplayName) 
     { 

      phnum.Add(result.PhoneNumbers.FirstOrDefault().ToString()); 

     } 
    } 

    Numbers.ItemsSource = phnum;    
} 

This Works !!。在調試時,我發現它的phnum.Clear()給出了一個問題。所以我想爲選定的聯繫人創建一個phnum列表的新實例。

相關問題