ContactPicker.PickMultipleContactsAsync 的替换

Replacement for ContactPicker.PickMultipleContactsAsync

ContactPicker.PickSingleContactAsyncContactPicker.PickMultipleContactsAsync 的文档声明它们 "may" 不受支持 post Windows 8.1 或 Windows Phone 8.1

并支持他们不。不仅已弃用,而且已过时,取而代之的是 ContactPicker.PickContactAsyncContactPicker.PickContactsAsync,旧方法在 Windows 10 下抛出未实现的异常。

在回答我关于 Stack Overflow 的最后一个问题之后,我阅读了该页末尾引用的 Windows 10 documentation page for PickContactsAsync and downloaded the sample。 运行那个在Win10下的样本,我发现:

ContactPicker.PickContactsAsync 的行为是一个即将被纠正的错误,一个简单的故障,因为油漆在 Windows 10 上仍在干燥,或者某些天才决定停止支持多个 select接触离子?

我可以编写一个循环,以便用户可以连续选择它们——短期内我看不到任何其他选项——但这是一种糟糕的用户体验。如果我需要设置一些设置或选项来神奇地解决问题,我很想听听。


下面是好答案的支持信息

这是选择器启动时的样子。

应用栏在哪里?它没有显示。如果您单击或点按某个联系人,则会 selected 并且选择器会关闭。只有当你点击 "Select a contact" 时它才会出现,像这样:

如果您随后单击 list-with-ticks 字形,突然 UI 变为:

一旦你知道如何做,这很容易,而且很难发现。这无疑是被称为 Windows 8 的 haptomanic 发作的残余。

其他伤亡包括曾经允许范围的 Shift 和 Ctrl 键以及 mouse/keyboard 环境中的 multi-select。这些行为由通用对话框使用的 Windows 列表框实现。大概新的 UI 不使用列表框。

一些主动提供给 Microsoft 的建议

免费升级到 Windows 10 的全部意义在于将其固定在家中,因为这实现了两件事。

像这里考虑的那样的 UX 灾难会毁掉你的好工作。联系人选择器是新的通用对话框。它影响一切。尽管应用程序开发人员愚蠢,但这是产生良好用户体验的最大杠杆

这是我认为您应该做的:当通过 PickContactsAsync 调用联系人选择器时,已经在多 select 模式下打开它。

还有一件事

虽然我在倾销微软,但样本中也有一个错误。在Scenario2_PickContacts.xaml.cs这一行

if (this.contacts.Count > 0)

应该读作

if (this.contacts != null && this.contacts.Count > 0)

因为如果你不选择任何东西,this.contacts 就是空的,它会吐出来。

PickContactsAsync 可以 select 多个联系人,但是 UI 它有点隐藏。您需要单击应用栏中的 "Select" 按钮。 (看起来像一个带有复选框的列表。)