2017-05-30 11 views
1

私はここで何か非常に基本的なものを見逃しているように感じますが、私は答えを見つけることができません。WPFでの起動時に2つのウィンドウを開くにはどうすればよいですか?

私のアプリが起動すると、MainWindow.xamlに加えて、xamlの既存の内容に基づいて2番目のwindowが開きます。私はコードビハインドを使用してNEW windowを作成する方法について多くを見つけましたが、別のxamlファイルであらかじめ定義されているwindowを開きたいとします。

どちら

がMahAppsを使用していて、第二 windowControlWindow.xamlと呼ばれ、 MainWindow.xaml

とルートに座っている

<Controls:MetroWindow x:Class=... 
    ... 
</Controls:MetroWindow> 

のように定義されていることはありがとう

EDIT:

をしようapp.xaml.csのApp_Startupイベントでウィンドウを作成して表示するには、風MainWindow.xamlと同じクラスから継承した場合、Show()メソッドは使用できません。 NewWindowAは、あなたが期待するとして機能し、新しいを可能App.xaml.cs

using System.Windows; 
using GalaSoft.MvvmLight.Threading; 

namespace RollCallDisplayDemo 
{ 
    public partial class App : Application 
    { 
     void App_Startup(object sender, StartupEventArgs e) 
     { 
      MainWindow NewWindowA = new MainWindow(); 
      ControlWindow NewWindowB = new ControlWindow(); 
     } 

     static App() 
     { 
      DispatcherHelper.Initialize(); 
     } 
    } 
} 

MainWindow.xaml.cs

using MahApps.Metro.Controls; 

namespace RollCallDisplayDemo 
{ 
    public partial class MainWindow : MetroWindow 
    {   
     public MainWindow() 
     { 
      InitializeComponent(); 
     } 
    } 
} 

ControlWindow.xaml.cs

using MahApps.Metro.Controls; 

namespace RollCallDisplayDemo 
{ 
    public partial class ControlWindow : MetroWindow 
    { 
     public ControlWindow() 
     { 
      InitializeComponent(); 
     } 
    } 
} 

インスタンスを作成して表示します。 NewWindowBはInitializeComponentメソッドしか使用できません。MetroWindowクラスから継承する必要があるものはありません。

+2

をあなたは、アプリケーションの起動イベントにフックとApp.Xaml.csからできますが、その後、何でも行うことができますファイルほしいのですが、 –

+0

それを購読した後、既存のxamlファイルを別の新しいウィンドウとして起動するにはどうしたらいいですか?コードビハインドで定義された新しいウィンドウを作成する方法がわかります。 downvoteが何であるかわからない... – Ryan

+1

XAMLでは、あなたは**ウィンドウとその内容を定義しますが**作成しません**。とにかく 'new'演算子を使って**新しいウィンドウを作成する必要があります**。あなたの 'MainWindow'も' new'演算子によって**作成されています。あなたはそれを見ません。フレームワークはこれをあなたから隠します。 – dymanoid

答えて

2

NewWindowB.Show()を呼び出して可視にする必要があります。また、メインウィンドウが作成されている方法をオーバーライドする必要はありません、ちょうどこのような何か:

public partial class App : Application 
{ 
    protected override void OnActivated(EventArgs e) 
    { 
     base.OnActivated(e); 

     ControlWindow NewWindowB = new ControlWindow(); 
     NewWindowB.Show(); 
    } 
} 
+0

Markありがとうございます。 NewWindowBでShow()メソッドを使用できるようにするには、ソリューションを再構築する必要があることが判明しました。私は作業コードの例に感謝します。 – Ryan

関連する問題