我正在使用WPF (c#, XAML)编写程序。这里有一个页面叫做"Startup",另一个叫做"error"还有一个叫做accesshandler。cs"的类。accessHandler不断检查一些bool(只能从accessHandler中完成),如果这个bool返回true,我需要accessHandler导航到页面"错误"。我尝试了很多方法:
婚前"error"作为UserControl(将XAML复制到UserControl中),并尝试在"启动"中将其加载到MainGrid中。这没有工作,因为我没有办法(我知道)of)获取当前显示的"Startup"实例。所以我不能加"error"到《创业》杂志的麦茵格丽德。我想不出一种方法来获得当前显示的Startup实例
-将errorPage作为Page,并试图从acceshandler导航到它。然而,我不能在accesshandler中使用NavigationService,因为我没有激活的"Startup"实例在那里。-创建一个新的Startup实例,然后使用它来导航到返回的页面出现以下错误:&;对象引用未设置为对象的实例。&;重现此错误的那段代码:
`error errInst = new error();
Startup st = new Startup();
st.NavigationService.Navigate(errInst);`
我的问题可以通过以下方式解决:找到获取"Startup"当前显示的实例的方法;一旦发现bool值为真,就立即将其放入accessHandler或者找到一种导航到errorPage"不需要当前显示的"Startup">
实例提前感谢!
答案其实很简单。让"Startup"当另一个页面应该从另一个名为AccessHandler的类加载时显示的页面。你需要在类的内部有一个引用,看起来像这样:
public static Startup st;
在startup的main函数中你可以这样声明引用:
AccessHandler.st = this;
你可以使用"st"在AccessHandler中,像往常一样,对于我的目的,例如:
st.NavigationService.Navigate(new alert());