基本的に、電話から連絡先を取得して、アプリの機能の Listpicker コントロールに表示しようとしています。2 つのリストピッカーがあります。1 つは連絡先リストの名前用で、もう 1 つは選択した連絡先の電話番号のリストを表示します。
これが私のコードです:
//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();
}
Listpicker バックグラウンドで選択した名前の電話番号を Numberlist に入力できますが、番号が前面に表示されません。Numbers_SelectionChanged() イベントは、ページの読み込み時に 1 回だけ呼び出され、連絡先リストを変更してもトリガーされていないと思います。誰でもどこが間違っているのか考えていますか?