我在调用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();
}
我得到以下异常:
类型&#39; System.ArgumentException&#39;的例外情况发生在 Microsoft.Xna.Framework.GamerServices.ni.dll但未处理 用户代码
附加信息:参数无效。它必须包含 在1到2个字符串之间。字符串不能为null或空,并且必须 长度少于256个字符。
通过调试我将问题定位到messageCommands.Keys
,因为如果我用静态数组调用函数它就可以正常工作。
那么我做错了什么?
答案 0 :(得分:2)
问题是对Guide.BeginShowMessageBox的调用中请求的按钮数。根据文档,Windows Phone上的最大按钮数为2。