在Windows Phone 7中使用C#獲取所有聯(lián)系人資料
在早期的 windows phone 7 SDK 中只可以通過 Choosers 獲取電話號碼和 Email 地址以及其他一些簡單的資料。從 7.1 Mango SDK 開始,微軟就放開了這個限制,可獲取包括:Address , DisplayName,EmailAddresses 等等。
Contacts 類在 Microsoft.Phone.UserData 命名空間中定義,擴(kuò)展自 PhoneDataSharingContext 并提供一些方法用于跟聯(lián)系人數(shù)據(jù)進(jìn)行交互。
- public MainPage()
- {
- InitializeComponent();
- Contacts objContacts = new Contacts();
- objContacts.SearchCompleted += new EventHandler<ContactsSearchEventArgs>(objContacts_SearchCompleted);
- objContacts.SearchAsync(string.Empty, FilterKind.None, null);
- }
- void objContacts_SearchCompleted(object sender, ContactsSearchEventArgs e)
- {
- foreach (var result in e.Results)
- {
- lst.Add("Name : " + result.DisplayName + " ; Phone Number : " + result.PhoneNumbers.FirstOrDefault());
- }
- }
Contacts 也可以用于聯(lián)系人的搜索,通過 SearchAsync 方法。而 FilterKind 用于指定搜索的條件,例如 PhoneNumber , DisplayName or EmailAddress 等待。如果傳遞空值,則返回所有聯(lián)系人信息。
這里是一些對聯(lián)系人電話號碼等信息進(jìn)行格式化顯示的方法。

- public partial class MainPage : PhoneApplicationPage
- {
- // Constructor
- public MainPage()
- {
- InitializeComponent();
- Contacts objContacts = new Contacts();
- objContacts.SearchCompleted += new EventHandler<ContactsSearchEventArgs>(objContacts_SearchCompleted);
- objContacts.SearchAsync(string.Empty, FilterKind.None, null);
- }
- void objContacts_SearchCompleted(object sender, ContactsSearchEventArgs e)
- {
- var ContactsData = from m in e.Results
- select new MyContacts
- {
- DisplayName = m.DisplayName,
- PhoneNumber = m.PhoneNumbers.FirstOrDefault()
- };
- var MyContactsLst = from contact in ContactsData
- group contact by contact.DisplayName into c
- orderby c.Key
- select new Group<MyContacts>(c.Key, c);
- longlist1.ItemsSource = ContactsData;
- }
- }
- public class MyContacts
- {
- public string DisplayName { get; set; }
- public ContactPhoneNumber PhoneNumber { get; set; }
- }