我使公共静态函数可以从另一个窗口访问我的主窗口控件(比如像工具箱这样的东西) 我添加了这个方法:
public static void GoToLibraryPage()
{
MainFrame.NavigationService.Navigate(new Library_Pg());
}
我在同一窗口中有一个名为MainFrame的控件(框架):
<Grid>
<Frame x:FieldModifier="Public" x:Name="MainFrame" NavigationUIVisibility="Hidden" />
</Grid>
错误是:
这看起来很有趣,但我想我不了解基本知识。我怎样才能访问它?非静态字段所需的对象实例
更新 我做了一个像我这样的主窗口的实例:
public static void GoToLibraryPage()
{
MainWindow mmm= new MainWindow();
mmm.MainFrame.NavigationService.Navigate(new Library_Pg());
}
通过这样做没有发生任何事情,但是一个新的错误:
类型&#39; System.NotImplementedException&#39;的第一次机会异常。 发生在System.dll
中
答案 0 :(得分:0)
这就是你需要的......
(Application.Current.MainWindow as MainWindow).MainFrame.NavigationService.Navigate(new Library_Pg());
一般来说,以这种方式访问方法被认为是不好的形式......但每个人都这样做。
答案 1 :(得分:0)
事实上我应该改变我的问题标题但是,让我们暂时接受它。 为了访问主窗口控件,我们应该获得现有的主窗口类。但由于我无法理解的原因,这样的一些事情对我没有用处:
(Application.Current.MainWindow as MainWindow)
但这很有效,我的答案就是:
MainWindow ExistingInstanceOfMainWindow= Window.GetWindow(Application.Current.MainWindow) as MainWindow;
如果有人能解释原因,请随时将您的知识添加到答案中。