【发布时间】:2016-06-07 02:33:25
【问题描述】:
假设您正在动态获取可以在航班上办理登机手续的乘客列表。用户需要能够从列表中选择任意数量的乘客来办理登机手续。我可以制作动态列表,但我不知道如何让它选择多个选项。我在动态字段上使用了 .SetAllowsMultiple(true) 但它不起作用。我查看了文档here 中的 formflow 示例,但该示例仅允许单个选择。你将如何使它与多个选择一起工作?
这是我在 CheckinDialog 类中放置的属性:
public string Passenger { get; set; }
这是我的动态字段:
.Field(new FieldReflector<CheckinDialog>(nameof(Passenger))
.SetAllowsMultiple(true)
.SetActive((state) =>
{
return CheckinDialog.Passengers != null && CheckinDialog.Passengers.Count > 0;
})
.SetPrompt(new PromptAttribute(Resources.Checkin.Passengers))
.SetType(null)
.SetDefine((state, field) =>
{
foreach (var pax in GetPassengers())
field
.AddDescription(pax, pax)
.AddTerms(pax, pax);
return TaskHelpers.FromResult(true);
}))
【问题讨论】:
-
要获取多个值,您需要一个能够接受多个值的属性。因此,您可能需要 List
类型的属性。您可以查看 AnnotatedSandwich 示例。 -
不幸的是,列表属性似乎不适用于动态字段:(
-
确实不支持列表属性(获取 NotImplementedException)。作为一种解决方法,您可能会立即恢复到 generating an Enum,但不确定您是否想要这样做。
标签: c# botframework