簡體   English   中英

你能從App.Xaml.cs中調用MainWindow.Xaml.cs中的函數嗎?

[英]Can you call a function in MainWindow.Xaml.cs from App.Xaml.cs?

這似乎可行,但由於某種原因,我沒有采取正確的方法。 我是C#和.NET的新手,所以我希望這不是一個荒謬的問題:)

不知道你為什么要這樣做。 它似乎不是最好的設計,但如果不知道你在做什么的細節,我不能對此發表評論。 以下是如何做到這一點:

在App.Xaml.cs中:

var main = App.Current.MainWindow as MainWindow; // If not a static method, this.MainWindow would work
main.MyFunction();

請注意,您必須在啟動后執行此操作。 如果要在啟動之前執行此操作,則需要創建MainWindow對象並將其分配給this.MainWindow

var window = new MainWindow();
this.MainWindow = window;

window.Show();

window.MyFunction();

很高興見到有人出發! 堅持下去,你會發現語言是強大的,最終你會看到他們打算用你編碼的設計方法。

我只能解釋一些你可能想做這種事情的情況。

1)調用一些獨立於窗口的函數:

如果您的代碼不依賴於或引用您的MainWindow,也許您應該將其移出MainWindow的代碼文件並將其放在其他地方? 你可以擁有任意數量的.cs文件,所以要花時間整理一下。 你以后會很高興。

2)加載后在窗口上執行一些初始化任務:

在窗口的代碼中,在構造函數中的InitializeComponent()調用之后插入代碼。 (這是沒有返回類型的方法,它只是“public MainWindow(){”

請記住,當您需要傳入某些內容時,可以向構造函數添加參數。對於Visual Studio創建的默認無參數構造函數,沒有什么不可思議的。 您可以避免以這種方式創建大量復雜的代碼。 通常最好在窗口代碼中進行初始化而不是加載窗口,

3)在窗口內外獲取一些簡單數據

您是否學會了如何創建自定義屬性? 這真的很容易。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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