[英]Can't Access to a control in main window from static method
我使public static函數可以從另一個窗口訪問我的主窗口控件(比如說工具箱之類的東西),並且添加了以下方法:
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());
}
通過這樣做,除了一個新錯誤外,什么都沒有發生:
System.dll中發生類型'System.NotImplementedException'的第一次機會異常
這是您需要的...
(Application.Current.MainWindow as MainWindow).MainFrame.NavigationService.Navigate(new Library_Pg());
通常,以這種方式訪問方法被認為是錯誤的形式...但是每個人都這樣做。
實際上,我應該更改我的問題標題,但是,讓我們暫時接受它。 為了訪問主窗口控件,我們應該獲取主窗口的現有類。 但是由於我無法理解的原因,有些事情對我不起作用:
(Application.Current.MainWindow as MainWindow)
但這有效,我的答案是:
MainWindow ExistingInstanceOfMainWindow= Window.GetWindow(Application.Current.MainWindow) as MainWindow;
如果有人可以解釋原因,請隨時將您的知識添加到答案中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.