gpt4 book ai didi

c# - Windows Phone 8 工具包中的 CustomMessageBox 抛出 NullPointerException

转载 作者:行者123 更新时间:2023-12-02 05:18:56 25 4
gpt4 key购买 nike

创建 CustomMessageBox 的代码:

CustomMessageBox 是一个属性,而不是对工具包中 C# 类的引用。

CustomMessageBox.Dismissed += (dismissSender, dismissedEvent) =>
{
switch (dismissedEvent.Result)
{
case CustomMessageBoxResult.LeftButton:
PlaceCall(clickedFavorite.Name, clickedFavorite.PhoneNo);
break;
case CustomMessageBoxResult.RightButton:
HERE ---> SendText(clickedFavorite.PhoneNo);
break;
}
};

SendText() 方法的代码:

private void SendText(String phoneNo)
{
var smsTask = new SmsComposeTask
{
To = phoneNo
};

smsTask.Show();
}

事情是当 SmsComposeTask 启动时,手机导航到 SMS 应用程序,这是正确的。

如果用户随后决定返回,使用硬件后退按钮,SMS 应用程序关闭并且手机再次显示我的应用程序 - 但立即关闭,由 NullPointerException 引起:

   at Microsoft.Phone.Controls.CustomMessageBox.ClosePopup(Boolean restoreOriginalValues)
at Microsoft.Phone.Controls.CustomMessageBox.<>c__DisplayClass4.<Dismiss>b__1(Object s, EventArgs e)
at Microsoft.Phone.Controls.Transition.OnCompleted(Object sender, EventArgs e)
at MS.Internal.CoreInvokeHandler.InvokeEventHandler(Int32 typeIndex, Delegate handlerDelegate, Object sender, Object args)
at MS.Internal.JoltHelper.FireEvent(IntPtr unmanagedObj, IntPtr unmanagedObjArgs, Int32 argsTypeIndex, Int32 actualArgsTypeIndex, String eventName)

我也尝试过覆盖 OnBackKeyPress 事件,如下所示:

protected override void OnBackKeyPress(System.ComponentModel.CancelEventArgs e)
{
if (CustomMessageBox != null && CustomMessageBox.IsEnabled)
{
e.Cancel = true;
}
else
{
base.OnBackKeyPress(e);
}
}

有人知道该怎么做吗?

最佳答案

我找到了解决我自己问题的方法。我没有使用错误的 CustomMessageBox,而是找到了 Coding4Fun Windows Phone Toolkit它提供了一个迄今为止更稳定的消息框,称为 MessagePrompt - 下面是如何使用它。

创建按钮

var smsButton = new Button { Content = "SMS" };
smsButton.Click += (o, args) =>
{
// do something
};

var buttonList = new List<Button>
{
smsButton
};

创建实际的消息提示

var msgPrompt = new MessagePrompt
{
Title = "Message Prompt Title",
Body = new TextBlock { Text = "Text for the Body", FontSize = 25, TextWrapping = TextWrapping.Wrap },
ActionPopUpButtons = buttonList
};

显示它

msgPrompt.Show()

没有公牛

我在使用此MessagePrompt 时所体验到的好处是,您不会像使用自定义消息框

如果需要,您可以将 Body 属性设置为一个全新的 XAML 页面,这使该控件更加灵活。

引用:Coding4Fun WP7 Message Prompt in depth

关于c# - Windows Phone 8 工具包中的 CustomMessageBox 抛出 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14193059/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com