WPFアプリ(.NET Framework)で起動時にMainWindowを制御する方法 †
プロジェクトの作成で、WPFアプリを選択し、ビルドすると自動生成されたMainWindowが表示されます。
このMainWindowの表示をさせない(=プログラムで制御)する方法を以下に記します。
ウインドウ表示前に何かの処理をして表示・非表示を制御するようなときに使えると思います。
動作確認環境 †
- Windows 10 ver. 21H1
- Visual Studio 2019
- .NET Framework 4.7.2
修正箇所 †
修正箇所を以下に記します。
C# †
XAML,C#ソースを修正します。
App.xaml †
StartupUriを削除します。
- 修正前
<Application x:Class="NotDispMainWindowCS.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:プロジェクト名"
StartupUri="MainWindow.xaml">
<Application.Resources>
</Application.Resources>
</Application>
- 修正後
<Application x:Class="NotDispMainWindowCS.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:プロジェクト名">
<Application.Resources>
</Application.Resources>
</Application>
App.xaml.cs †
- 修正前
/// <summary>
/// App.xaml の相互作用ロジック
/// </summary>
public partial class App : Application
{
}
- 修正後
OnStartup, OnExitを実装します。
これにより、OnStartupでウインドウの表示制御をw.Show()のようにできるようになります。
何か判定で終了させる場合は、base.Shutdown を呼び出せばよいでしょう。
/// <summary>
/// App.xaml の相互作用ロジック
/// </summary>
public partial class App : Application
{
protected override void OnStartup(StartupEventArgs e)
{
base.OnStartup(e);
var w = new MainWindow();
w.Show();
}
protected override void OnExit(ExitEventArgs e)
{
base.OnExit(e);
}
}
VB(Visual Basic) †
XAML,VBソースを修正します。
Application.xaml †
StartupUriを削除します。
- 修正前
<Application x:Class="Application"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:プロジェクト名"
StartupUri="MainWindow.xaml">
<Application.Resources>
</Application.Resources>
</Application>
- 修正後
<Application x:Class="Application"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:プロジェクト名">
<Application.Resources>
</Application.Resources>
</Application>
Application.xaml.vb †
以上、WPFアプリでMainWindowの表示/非表示をプログラムで制御する方法でした。