如何调用Guide.BeginShowMessageBox

本文关键字:Guide BeginShowMessageBox 调用 何调用 | 更新日期: 2023-09-27 18:27:41

我在调用Guide.BeginShowMessageBox 时遇到问题

这是我的代码:

public object FuelTypeIndex { get; private set; }
private void PhoneApplicationPage_Loaded(object sender, RoutedEventArgs e)
{
    var messageCommands = new Dictionary<string, Action>()
    {
        {  "Diesel", () => {FuelTypeIndex = 0;}},
        {  "Petrol", () => {FuelTypeIndex = 1;}},
        {  "Other", () => {FuelTypeIndex = 2;}},
    };
    var result = Guide.BeginShowMessageBox("Title", "Message", messageCommands.Keys, 0, MessageBoxIcon.Warning, null, null);
    result.AsyncWaitHandle.WaitOne();
    int? choice = Guide.EndShowMessageBox(result);
    if (choice.HasValue)
        messageCommands.ElementAt(choice.Value).Value.Invoke();
}

我得到以下异常:

中发生类型为"System.ArgumentException"的异常Microsoft.Xna.Framework.GamerServices.ni.dll,但未在中处理用户代码

附加信息:参数无效。它必须包含在1到2个字符串之间。字符串不能为null或为空,并且必须长度小于256个字符。

通过调试,我将问题定位到了messageCommands.Keys,因为如果我用静态数组调用函数,它就可以正常工作。

那么我做错了什么?

如何调用Guide.BeginShowMessageBox

问题在于对Guide.BeginShowMessageBox的调用中请求的按钮数量。根据文档,Windows Phone上按钮的最大数量为两个。