Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 是什么导致了这个错误';调用的目标已引发异常';?_C#_Silverlight_Windows Phone 7_Windows Phone 8_Windows Phone - Fatal编程技术网

C# 是什么导致了这个错误';调用的目标已引发异常';?

C# 是什么导致了这个错误';调用的目标已引发异常';?,c#,silverlight,windows-phone-7,windows-phone-8,windows-phone,C#,Silverlight,Windows Phone 7,Windows Phone 8,Windows Phone,我正在开发一个WindowsPhone8应用程序,我在页面启动时创建了一个弹出元素,并将其用作静态变量弹出 private void Application_Launching(object sender, LaunchingEventArgs e) { RemoveCurrentDeactivationSettings(); APPCommon.popupsetup(); } //APPCOMMON Page public static Popup busyindica

我正在开发一个WindowsPhone8应用程序,我在页面启动时创建了一个弹出元素,并将其用作静态变量弹出

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
        }
    };
}
即使在重模式下,它也能在大多数情况下正常工作。但是,当应用程序进入空闲模式(锁屏或开始菜单)时,我偶尔会遇到一个错误。当我从开始菜单返回应用程序而不是使用后退键时,我会在我的
DefaultPage
中的下一行收到一个错误,上面写着“调用目标引发了异常”


异常详细信息“元素已经是另一个元素的子元素。

public MainPage()
{
     InitializeComponent();
     App.RootFrame.RemoveBackEntry();
     this.LayoutRoot.Children.Add(APPCommon.busyindicator); // Error Occurs
}
因此,我想知道为什么会发生这种情况,以及我应该做些什么来解决这个问题。

试试这个:

protected override void OnNavigatedTo(NavigationEventArgs e)
{
    base.OnNavigatedTo(e);
    App.RootFrame.RemoveBackEntry();
    this.LayoutRoot.Children.Add(APPCommon.busyindicator);
}
我建议使用“工厂”方法,而不是弹出窗口的共享实例。使用全局静态UI元素是自找麻烦

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


你检查过例外情况了吗?你知道,它有很多信息,可能是关于抛出异常的原因的信息。这就是为什么会抛出异常,你知道。元素已经是另一个元素的子元素。你是否在应用程序的其他视图中显示弹出窗口?是的,我使用它就像使用消息框这样的常用功能。。。它内置于启动页面中,存储在静态变量中。然后当页面移动到另一个页面时添加到layoutroot,当用户离开页面时删除。。。!好了。它已添加到另一个父级。可能是现在的。看看是否已经添加了。如果没有,重构代码,以便每次都创建一个新的实例。噗。错误消失了。实际上它不起作用。它仍然显示,并且详细地说,它是“元素已经是另一个元素的子元素了。”实际上,我试图对所有ui使用一个元素,但这会对内存性能造成问题吗。。。因为我正在努力压缩每一件事,以获得完美的结果,当操作系统无法在空闲模式下处理这些用户界面时,很难使用windows mobile应用程序@我在想也许你脑子里有记忆。但我不认为单例方法真的能给你带来什么好处——只要弹出窗口同时在两个地方使用,就会引发异常。我不确定我能得到多少好处,但我正在为客户开发一款CRM应用程序,它使用的是成本最低的设备,比如诺基亚LUMIA 520,总容量为414 MB。我会试试这个,让你知道这个改变会有什么影响。
public MainPage()
{
     InitializeComponent();
     this.LayoutRoot.Children.Add(APPCommon.CreatePopup());
}