在使用自定義的Main函數啓動應用時,應該需要做這幾步:
1.去掉App.xaml的Application的starup屬性。
2.右鍵App.xaml,屬性 把生成操作改爲Page。
3.如果有引入資源,需要在自己寫的Main裏引入資源,並且一定是在創建任何引用了Appli的資源的窗體前引入。否則,會出現,在設計窗體時,能看到資源樣式,但運行時報錯,找不到資源。
System.Uri resourceLocater = new System.Uri("/HelloLLLLL.PrivateAirDisk.ClientUI;component/app.xaml", System.UriKind.Relative);
System.Windows.Application.LoadComponent(App, resourceLocater);
另外,有個額外的知識點,窗體的DialogReslt的屬性設置了非空值,窗體就會被認爲是關閉了,比如這裏, 設置DialogResult爲false,沒有調用Close,結果是這個LoginForm依然被關閉了,所以只有真的要關閉的時候才把結果設爲true,不關閉,也不要設爲false。總之非空就會關閉。
[STAThread]
static void Main()
{
App App = new App();
App.ShutdownMode = ShutdownMode.OnMainWindowClose;
System.Uri resourceLocater = new System.Uri("/HelloLLLLL.PrivateAirDisk.ClientUI;component/app.xaml", System.UriKind.Relative);
System.Windows.Application.LoadComponent(App, resourceLocater);
MainWindow m_MianWindow = new MainWindow();
var loginForm = new WinUserLogin();
bool? rt = loginForm.ShowDialog();
if (rt == true)
{
App.Run(m_MianWindow);
}
}