Run
をクリックするかCtrl + F5
を押してプログラムを実行するとき、チェック条件に基づいて異なるウィンドウを開くことは可能ですか?
つまり、ある条件が満たされている場合は特定のウィンドウを開きたいが、そうでない場合は別のウィンドウを開きたい。
ウィンドウを開く前に、次のような状態を最初に確認する必要があります
if(File.Exists(<path-to-file>)
Open Window 1
else
Open Window 2
これは可能ですか?
app.xamlを調べます
削除する StartupUri="MainWindow.xaml"
追加 Startup="Application_Startup"
新しいイベントハンドラー
<Application x:Class="YourProject.App"
xmlns="http://schemas.Microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.Microsoft.com/winfx/2006/xaml"
Startup="Application_Startup">
app.xaml.csの背後にあるフォームコードは、次のようなApplication_Startupを作成します。
private void Application_Startup(object sender, StartupEventArgs e)
{
//add some bootstrap or startup logic
var identity = AuthService.Login();
if (identity == null)
{
LoginWindow login = new LoginWindow();
login.Show();
}
else
{
MainWindow mainView = new MainWindow();
mainView.Show();
}
}
_App.xaml
_を使用してアプリケーションを起動し、Nikhil Agrawalが言ったように、StartupUri
を動的に変更できます。
ただし、public static void Main()
からアプリケーションを起動できます。 _StartupUri="MainWindow.xaml"
_の_App.xaml
_属性を削除し、Program
メソッドを含むMain
クラスをプロジェクトに追加してから、プロジェクトプロパティに移動し、スタートアップオブジェクトを_YourAssemblyName.Program
_に設定します。
_[STAThread]
public static void Main(string[] args)
{
var app = new Application();
var mainWindow = new MainWindow();
app.Run(mainWindow);
}
_
注:STAThreadAttribute
は必須です。デフォルトでWPFプロジェクトが派生Application
クラスを作成する方法など、独自の派生バージョンApp
が必要な場合は、Main
の代わりにApplication
でそれを使用できます。ただし、必要ない場合は、ベースApplication
クラスを直接使用して、派生クラスをプロジェクトから削除するだけです。
App.xaml
Application
属性を持つStartupUri
タグがあります。 App.xaml.csセクションにこのコードを書く必要があると思います
public App()
{
// Your Code
}
StartUpUri
を目的のxamlファイルに設定します。