2017-04-19 18 views
4

私は基本的にデータベース接続を実行するログインWPFアプリケーションのプロジェクトを作成しました。今私は、このログインプロジェクトを開始する必要があるアプリケーション(常にWPF)を開発しています。私は現在のプロジェクトで参照にLogin.Exeを追加しましたが、ログイン後にMainWindow()を実行した後にのみ強制的に開始する方法が見つかりません。WPF:アプリケーションウィンドウの前にログインウィンドウ(プロジェクトをインポート済み)を表示するにはどうすればよいですか?

私は現在、この

namespace Administrator 
{ 
    public partial class MainWindow : Window 
    { 
     public MainWindow() 
     { 
      InitializeComponent(); 
      Window login = new Login.MainWindow(); 
      login.Show(); 
     } 
    } 
} 

ような何かをしようとしている私のmainwindow.xamlは、空のコンテンツを持っており、コードのこの作品は、それは、ログインフォームでなく、空白のウィンドウが表示されます。どうすれば目標を達成できますか?

+0

ログインウィンドウは 'Window'か' UserControl'ですか? – Default

答えて

5

これは次のパターンで実現できます。

App.xamlの変更StartupUri="MainWindow.xaml"Startup="ApplicationStart"とApp.xaml.csでは、ApplicationStartメソッドを作成します。

private void ApplicationStart(object sender, StartupEventArgs e) 
{ 
    Window login = new Login.MainWindow(); 
    login.Show(); 

    //show your MainWindow 
} 

私はこのパターンを優先します。あなたのメインビューが表示される前に、ApplicationStartや他の何かにあなたのDIコンテナをセットアップしてください。 App.xaml "ShutdownMode" と "StartupUri" で

+0

これは完全に私のために働く。どうもありがとうございました。 –

+0

あなたの歓迎:それが働いているときに答えを受け入れるといいでしょう。 –

+0

今や別の質問です。私のログインプロジェクトはMVVMパターンに従って開発されており、変数が必要ですが、Login VMにアクセスするのは正しいですか?VMinstance = login.Datacontext ViewModel? –

5

セット:

<Application x:Class="MyApp.App" 
       xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
       xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
       xmlns:local="clr-namespace:MyApp" 
       ShutdownMode="OnExplicitShutdown" 
       StartupUri="Login.xaml"> 

"StartupUriは、" あなたのログインフォームです。

+1

私の意見では、ログインウィンドウがメインウィンドウを開く必要があるときに、最もクリーンなプログラミング方法ではないと考えられます。そのロジックはログインウィンドウに依存しません。だから私はApplicationStartメソッド(私の答えのように)を好む理由です。 –

関連する問題