2012-03-06 2 views
0

기본적으로 전화에서 연락처를 가져와 내 응용 프로그램의 기능에 대한 Listpicker 컨트롤에 표시하려고합니다. 두 개의 Listpickers가 있습니다. 하나는 연락처 목록의 이름이고 다른 하나는 선택한 연락처의 전화 번호 목록입니다.선택한 항목을 Wp7 Listpicker 컨트롤에 표시 할 수 없습니다.

여기 내 코드는 다음 Listpicker 배경에서 선택한 이름 PHONENUMBERS으로 Numberlist을 채울 수

//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(); 

    } 

,하지만 숫자가 전면에 표시되지 않습니다. 나는 Numbers_SelectionChanged() 이벤트는 페이지가로드 될 때 한 번만 호출되며 연락처 목록을 변경하면 트리거되는 것을 볼 수 없다고 생각합니다. 누구든지 어디로 잘못 가고 있는지 생각하고 있습니까? 당신이 List<string> ObservableCollection<string> 로 변경하는 경우

답변

1

이 작동합니다.

또한 XAML 또는 생성자에서 ItemSource를 한 번 설정하면됩니다.

그러나 2011 년 11 월 툴킷 및 ListPicker에서 다른 문제가 발생할 수 있습니다.

자세히보기 in thread.

+0

답장을 보내 주셔서 감사합니다. ObservableCollection도 시도했지만 여전히 동일합니다. 또한 다른 페이지에서 잘 작동하기 때문에 이것이 2011 년 11 월 Listpicker 문제라고 생각하지 않습니다. – Sri

+0

그는 ItemsSource와 컬렉션간에 바인딩을 만들지 않아서 작동하지 않습니다. – AlexDrenea

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

디버깅하는 동안 나는 그 phnum.Clear() 문제를 발견했다. 그래서 나는 선택한 연락처에 대해 phnum list의 새로운 인스턴스를 생성 할 생각이었다.