在 WP8 的联系人列表中添加联系人
Posted
技术标签:
【中文标题】在 WP8 的联系人列表中添加联系人【英文标题】:Append contacts in contact list in WP8 【发布时间】:2014-11-05 12:31:01 【问题描述】:我想从 xml 文件向联系人列表中添加多个联系人,但 saveContactTask.Show(); 在联系人列表中添加了一位联系人,请任何人告诉我如何解决此问题。
这是我的代码:
private void AddContacts(object sender, RoutedEventArgs e)
using (IsolatedStorageFile istf = IsolatedStorageFile.GetUserStoreForApplication())
using (IsolatedStorageFileStream istfs = istf.OpenFile("MyContacts.xml",FileMode.Open))
XDocument doc = XDocument.Load(istfs);
var query = from d in doc.Root.Descendants("Contacts")
select new
firstName = d.Element("name").Value,
mobilePhone = d.Element("phone").Value
;
foreach (var po in query)
saveContactTask.FirstName = po.firstName;
saveContactTask.MobilePhone = po.mobilePhone;
saveContactTask.Show();
【问题讨论】:
我认为这个链接可以帮助你 [***.com/questions/18426871/… [1]: ***.com/questions/18426871/… 【参考方案1】:SaveContactTask 类旨在一次仅添加一个联系人,并且 Show() 函数是异步的。在第一个通话结束之前,您无法添加第二个联系人。您的代码应该被重写以对saveContactTask.Completed += new EventHandler<SaveContactResult>(saveContactTask_Completed);
事件做出反应,并仅在前一个联系人完成后才开始添加第二个(等)联系人。有可能,新的SaveContactTask
应该用于第二个(等)联系人,请记住。
尝试这样的事情(这只是一个想法):
private List<Contact> listToAdd;
private SaveContactTask saveTask;
saveTask.Completed += addComplete;
void addComplete(...)
if ( listToAdd.Count > 0 )
Contact contact = listToAdd[0];
listToAdd.RemoveAt(0);
saveTask. (set values from contact)
saveTask.Show();
【讨论】:
成功添加第一个联系人后,它退出了foreach循环,如何解决这个问题?而不是 foreach 我应该选择其他解决方案吗? 是的,您需要另一种解决方案。您正在 UI 线程中工作,您无法停止它并等待操作完成。尝试在 saveContactTask.Completed 函数中使用类级别变量创建循环。以上是关于在 WP8 的联系人列表中添加联系人的主要内容,如果未能解决你的问题,请参考以下文章
如何通过长按我的 Android 应用程序的联系人列表中的联系人添加附加选项?
如何通过Android手机联系人列表中的代码添加联系人详细信息..?
谁能帮我知道如何将 ags xmpp 联系人列表添加到 XML 文件并从中显示到列表视图中