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