Невозможно отобразить выбранный элемент в элементе управления Wp7 Listpicker - PullRequest
0 голосов
/ 06 марта 2012

В основном я пытаюсь вытащить контакты из телефона и показать их в элементе управления Listpicker для функции в моем приложении.У меня есть два 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();

    }

Я могу заполнить список номеров телефонными номерами для выбранного имени на фоне средства выбора списков, но номер не отображается спереди.Я думаю, что событие Numbers_SelectionChanged () вызывается только один раз, когда страница загружается, и я не вижу его срабатывания при изменении списка контактов.Кто-нибудь имеет представление о том, где я иду не так?

Ответы [ 2 ]

1 голос
/ 07 марта 2012
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 для выбранного контакта.

1 голос
/ 07 марта 2012

Если вы измените List<string> на ObservableCollection<string>, это должно сработать.

Кроме того, вам нужно будет установить ItemSource только один раз, в Xaml или в конструкторе.

Но вы можете запуститьв другой выпуск с набором инструментов ноября 2011 года и ListPicker.

Подробнее в теме .

...