我正在开发一个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
}
因此,我想知道为什么会这样,以及我该怎么做才能解决这个问题。
答案 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);
}