簡體   English   中英

無法從靜態方法訪問主窗口中的控件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM