文档ContactPicker.PickSingleContactAsync
并ContactPicker.PickMultipleContactsAsync
声明它们“可能”在 Windows 8.1 或 Windows Phone 8.1 之后不受支持
并且支持他们不是。不仅已弃用而且已过时,支持旧方法ContactPicker.PickContactAsync
并ContactPicker.PickContactsAsync
在 Windows 10 下抛出未实现的异常。
在回答了关于 Stack Overflow 的最后一个问题之后,我阅读了PickContactsAsync 的 Windows 10 文档页面,并下载了该页面末尾引用的示例。在 Win10 下运行该示例,我发现:
ContactPicker.PickContactAsync
允许按预期只选择一个联系人。ContactPicker.PickContactsAsync
有效,但只允许选择一个联系人,这与样本提出的期望相反。
错误的行为是否ContactPicker.PickContactsAsync
即将得到纠正,是由于 Windows 10 上的油漆仍在干燥而导致的简单故障,还是某些天才决定停止支持多选联系人?
我可以编写一个循环,以便用户可以连续选择它们——我在短期内看不到任何其他选项——但这是一种糟糕的用户体验。如果有一些我需要设置的设置或选项可以神奇地解决问题,我很想听听。
支持信息以获得以下良好答案
应用栏在哪里?它没有显示。如果您单击或点击某个联系人,则会将其选中并且选择器会关闭。只有当您单击“选择联系人”时它才会出现,如下所示:
如果然后单击带有刻度的列表字形,UI 会突然变为:
一旦你知道如何做到这一点,这很容易,而且很难发现。这无疑是被称为 Windows 8 的 haptomanic 阵发性的残余。
其他损失包括曾经允许在鼠标/键盘环境中进行范围和多选的 Shift 和 Ctrl 键。这些行为是由 Common Dialogs 使用的 Windows ListBox 实现的。大概新的 UI 不使用 ListBox。
对微软的一些不请自来的建议
免费升级到 Windows 10 的全部意义在于将其固定在家中,因为这实现了两件事。
- 在家里习惯 Windows 的人会希望在工作场所使用它。
- 它灌输了年轻人。你不能把他们单独留在苹果公司。这简直令人毛骨悚然。
像这里考虑的那样的用户体验灾难会破坏你的好工作。联系人选择器是新的通用对话框。它影响着一切。尽管应用程序开发人员很愚蠢,但这是您最能产生良好用户体验的地方。
这是我认为你应该做的:当通过 PickContactsAsync 调用联系人选择器时,已经在多选模式下打开它。
还有一件事
虽然我在倾倒微软,但示例中也存在一个错误。在Scenario2_PickContacts.xaml.cs
这一行
if (this.contacts.Count > 0)
应该读
if (this.contacts != null && this.contacts.Count > 0)
因为如果您不选择任何东西,this.contacts
则为 null 并且会出错。