2011-05-19 3 views
1

私はコンソールプロジェクトを持っていますが、今はユーザーインターフェイスを置く必要があります。だから私は3層モデル(プレゼンテーション、ビジネス、アクセスデータ)を使用しています。コンソールプロジェクトでMain()を使ってウィンドウを起動するには?

Main()私の方法ではプレゼンテーションレイヤー(ウィンドウフォームまたはWpfのアプリケーションのようなもの)を呼び出すので、プレゼンテーションレイヤーではCONSOLEを介したユーザーとのやり取りがあります。

プレゼンテーションレイヤーに「UserInterface.xaml」というウィンドウを追加して、コンソールの代わりに使用します。 INTERFACEはコンソールではないためです。

私は、MainWindowではMainWindow.Show()を呼び出していることがわかりました。

しかし、私の "UserInterface.xaml"の呼び出し方法はわかりません.Show()メソッドがないからです。

これは私の方法でメインです:

public static void Main() 
{ 
    MainWindow.Show(); // THIS IS WITH MainWindow.xaml 
    UserInterface.??? // THIS IS MY CASE WITH UserInterface.xaml 
} 

だから、誰かが、私は、メインメソッドから私の窓を呼び出すことができますどのように私に言うことができます?

+0

[プログラムクラスからウィンドウを開く?](http://stackoverflow.com/questions/6073658/open-a-window-since-programm-class) –

答えて

5

あなたは間違いなく間違ったプロジェクトテンプレートで始まりました。 WPFウィンドウを表示およびインタラクティブにするには、UIスレッドのルールに従わなければなりません。あなたのアプリのメインスレッドをSTAスレッドとしてマークし、メッセージループをポンピングすることが含まれます。このように:ユーザーがメインウィンドウを閉じるまで

class Program { 
    [STAThread] 
    public static void Main() { 
     var app = new Application(); 
     app.Run(new MainWindow()); 
    } 
} 

Application.Run()はブロッキング呼び出しであることに注意してください、それは戻りません。これはWindowsの仕組みの必然的な結果です。

+0

はい、私の場合はこれを行います:var app = new UserInterface(); app.Run(新しいプログラム()); .Runを認識しません。 – ale

+0

あなたはそれを後方に持っています。 –

+0

今、[STAThread]というウィンドウを開きますが、もう一度閉じました!なぜこれが発生するのですか?私は何ができますか? – ale

1

本当にウィンドウをUserInterfaceをされたと仮定すると、この作業をする必要があります:

var window = new UserInterface(); 
window.Show(); 
+0

.Show();が認識されません。 ..とUserInterfaceはウィンドウです。 – ale

+0

この場合、 'UserInterface'が' Window'だった場合、 'Show()'メソッドを持つので、もっとコードを表示しなければなりません。 'UserInterface'のソースコードはどのように見えますか? – svick

+0

これはクラスUserInterfaceの一部です。通常のウィンドウは次のようになります。publicクラスUserInterface:Window { publicイベントEventHandler OptionSelected; public void SetPathCharger2() { InitializeComponent();}} – ale

関連する問題