是什么导致此错误'异常被调用的目标抛出'?

时间:2014-08-22 10:56:08

标签: c# silverlight windows-phone-7 windows-phone-8 windows-phone

我正在开发一个Windows Phone 8 APP,我在Page Launch上创建了一个弹出元素,并用作静态变量弹出窗口。

private void Application_Launching(object sender, LaunchingEventArgs e)
{
     RemoveCurrentDeactivationSettings();

     APPCommon.popupsetup();
}

//APPCOMMON Page
public static Popup busyindicator;
public static void popupsetup()
{
    busyindicator = new Popup()
    {
        Child = new Border()
        {
            Child = new Telerik.Windows.Controls.RadBusyIndicator()
            {
                FontSize = 25,
                IsRunning = true,
                IsEnabled = true,
                Content = "Processing...",
                Foreground = new SolidColorBrush(Colors.White)
            },
            Opacity = 0.8,
            Name = "busyindicate",
            Background = new SolidColorBrush(Colors.Black),
            Width = Application.Current.Host.Content.ActualWidth,
            Height = Application.Current.Host.Content.ActualHeight
        }
    };
}

即使在重模式下也能正常工作。但是,当我从开始菜单返回应用程序而不是使用返回键时,应用程序进入IDLE模式(锁定屏幕或开始菜单)的罕见情况下我收到错误我收到错误说' 异常被调用的目标抛出'在我的DefaultPage中的以下行。

详细信息' 元素已经是另一个元素的子元素。'

public MainPage()
{
     InitializeComponent();
     App.RootFrame.RemoveBackEntry();
     this.LayoutRoot.Children.Add(APPCommon.busyindicator); // Error Occurs
}

因此,我想知道为什么会这样,以及我该怎么做才能解决这个问题。

2 个答案:

答案 0 :(得分:1)

我建议使用"工厂"方法而不是Popup的共享实例。使用全局静态UI元素是在乞求麻烦...

public static Popup CreatePopup()
{
    return new Popup
    {
        // ...
    };
}

public MainPage()
{
     InitializeComponent();
     this.LayoutRoot.Children.Add(APPCommon.CreatePopup());
}

答案 1 :(得分:0)

试试这个:

protected override void OnNavigatedTo(NavigationEventArgs e)
{
    base.OnNavigatedTo(e);
    App.RootFrame.RemoveBackEntry();
    this.LayoutRoot.Children.Add(APPCommon.busyindicator);
}