在数据透视表中使用Web浏览器时生产崩溃

时间:2014-01-13 22:30:49

标签: c# windows-phone-7 windows-phone-8 windows-phone webbrowser-control

我知道将WebBrowser放在Pivot / RadSlideView控件中是个坏主意。 无论如何,我这样做了:

<phone:PhoneApplicationPage
    x:Class="**.HtmlView"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:controls="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls"
    FontFamily="{StaticResource PhoneFontFamilyNormal}"
    FontSize="{StaticResource PhoneFontSizeNormal}"
    Foreground="{StaticResource PhoneForegroundBrush}"
    SupportedOrientations="PortraitOrLandscape" Orientation="Portrait"
    mc:Ignorable="d"
    Style="{StaticResource LeafPageNavigationStyle}">

    <controls:Pivot x:Name="Html" ItemsSource="{Binding Items}" 
                    Style="{StaticResource HeaderlessPivot}">
        <controls:Pivot.ItemTemplate>
            <DataTemplate>
                <phone:WebBrowser Source="{Binding}" />
            </DataTemplate>
        </controls:Pivot.ItemTemplate>
    </controls:Pivot>

</phone:PhoneApplicationPage>

基本上我想使用Pivot在我通过我的ViewModel提供的URI中浏览一系列HTML文档,它只是将数组包装在Caliburn.Micro OneActive Conductor中:

namespace DSBMobile.ViewModels
{
    public class HtmlViewModel : Conductor<Uri>.Collection.OneActive
    {
        private readonly IUnburyableState<Uri[], HtmlViewModel> _state;

        public HtmlViewModel(IUnburyableState<Uri[], HtmlViewModel> state)
        {
            _state = state;
            Items.AddRange(_state.State.ForceGetValue());
        }
    }
}

在我手动部署的调试版和发行版中运行良好。该应用程序通过商店强加的所有测试,但只要我尝试在应用程序中打开此特定视图,它就会崩溃而没有任何机会重定向到Telerik MessageBox。

一旦我移除外部Pivot并相应地调整ViewModel,它就会顺利运行。正如我所说,崩溃只发生在生产中。 Application.UnhandledException处理程序无法让应用程序吞下异常并显示错误。

这真是错综复杂,几个月来一直困扰着我。任何人都可以解决这个错误或指向一个有价值的方向吗?我还要感谢WP-ish建议显示多个可用的Web链接。

1 个答案:

答案 0 :(得分:7)

事实证明我收到了一个UnauthorizedAccessException,并解释说我错过了ID_CAP_WEBBROWSERCOMPONENT功能,但事实并非如此。这让我很困惑,直到我终于看到了docs

  

在XAML中创建WebBrowser控件时,必须为该控件的P:System.Windows.FrameworkElement.Name属性指定一个值,以便Windows Phone功能检测工具可以正确检测并授予您正确的功能。应用程序。有关Windows Phone功能检测工具的详细信息,请参阅如何确定应用程序功能。

使用x:Name设置,我终于可以获得无懈可击的体验。 就我个人而言,这是最烦人的错误。这有助于我可以在商店上传测试版,虽然我没有支付任何开发费,这是我事先不知道的。

TLDR:RTFM。