WPFにおけるPrism集中講座番外編:CommunityToolkit.Mvvmの力を借りて、Window内でViewを切り替える
まずは下準備! はーい、お久しぶり!CommunityToolkit.Mvvm大好きの、もりゃきお姉ちゃんだよ! 以前さぁ……WPFにおけるPrism集中講座(3) 試しにViewのサンプルを書いてみる で書いた内容って、Prism を使わなくてもできたのよね。 だから、パパのお許しがでたから書いちゃうね! プロジェクトを作りましょう。 Visual Studioで「WPFアプリケーション」を選んで、ソリューション名は「SimpleCTViewSample」、フレームワークは「.NET 9」選択ね! 次に、NuGet経由で「CommunityToolkit.Mvvm」と「Microsoft.Extensions.DependencyInjection」をいつもの通りにインストールしましょうね! CommunityToolkit.Mvvm V8 を使うから、エラーが出たらとりあえずリビルドしてね、お姉さんとの約束よ! DI の設定よ はい、これを App.xaml.cs に適切にコピペしちゃいましょう! public partial class App : Application { /// <summary> /// サービスの登録をします /// </summary> public App() { Services = ConfigureServices(); Ioc.Default.ConfigureServices(Services); } /// <summary> /// 現在の App インスタンスを取得します /// </summary> public new static App Current => (App)Application.Current; /// <summary> /// サービスプロバイダです /// </summary> public IServiceProvider Services { get; } /// <summary> /// サービスを登録します /// </summary> /// <returns></returns> private static ServiceProvider ConfigureServices() { var services = new ServiceCollection(); services.AddSingleton<IMessenger, WeakReferenceMessenger>(); services.AddSingleton<IMainWindowViewModel, MainWindowViewModel>(); services.AddTransient<MainControlViewModel>(); services.AddTransient<SettingsControlViewModel>(); return services.BuildServiceProvider(); } } 今回 AddTransient を使ってるけど、これは複数の UserControl を使うときはこうした方がいいようなの。 ...