我正在使用以下代码允许用户选择联系人:
ContactPicker ContactPicker = new ContactPicker();
ContactPicker.DesiredFieldsWithContactFieldType.Add(ContactFieldType.PhoneNumber);
var Contacts = await ContactPicker.PickContactsAsync();
if (Contacts.Count > 0)
{
foreach (Contact contact in Contacts)
{
string telephone = string.Empty;
string email = string.Empty;
if (contact.Phones.Count > 0)
{
telephone = contact.Phones[0].Number;
}
if (contact.Emails.Count > 0)
{
email = contact.Emails[0].Address;
}
PartyPerson person = new PartyPerson(DateTime.Now.ToString("PP_yyMMdd_hhmmss_ffff"), true, contact.DisplayName, 0, 0, 0, email, telephone);
AddPartyPerson(person);
}
}
ContactPicker = null;
但是,我只得到电话号码,对象“联系人”不包含任何电子邮件地址,即使它们存在于联系信息中。一种选择是切换:
ContactPicker.DesiredFieldsWithContactFieldType.Add(ContactFieldType.PhoneNumber);
和
ContactPicker.DesiredFieldsWithContactFieldType.Add(ContactFieldType.Email);
但是后来我没有得到电话号码……我希望能够一次选择检索所有信息。
有没有办法通过一个选择来选择这两个信息?(我还尝试向 DesiredFieldsWithContactFieldType 添加多个条目,但随后出现异常...)
最好的祝福,
可兰
编辑 07.08.2015:由于“ContactPicker.DesiredFieldsWithContactFieldType”只能接受一种类型的“ContactFieldType”,我解决此问题的方法是首先允许用户通过 ContactFieldType.PhoneNumber 获取联系人,然后我以编程方式检索电子邮件地址选定的联系人。
从用户的角度来看,这不是问题,因为所有内容都将在 ContactPicker.PickContactsAsync 中正确可见,我们只需要在代码隐藏中手动检索丢失的电子邮件信息,这很容易,因为我们知道联系人是什么由用户选择。