Caliburn Micro Part 5: The Window Manager をやってみる。
Mindscape Blog » Blog Archive » Caliburn Micro Part 5: The Window Manager manbou404.hatenablog.com
要は、Window Manager の使い方
以下は、前回のソリューションをつかう。
ShellViewとShellViewModelを空にしておく。
ColorView, ColorViewModel, ColorEventを削除する。
Using a Window Manager
- ShellViewにボタンを追加
<!--ShellView.xaml--> <Grid Width="300" Height="300" Background="LightBlue"> <Button Name="OpenWindow" Content="Open Window" Margin="30" /> </Grid>
- ShellViewModelにwindowManagerをもらうのと、追加したボタンのハンドラを追加
// <ShellViewModel.cs> [Export(typeof(IShell))] public class ShellViewModel : PropertyChangedBase, IShell { private readonly IWindowManager _windowManager; [ImportingConstructor] public ShellViewModel(IWindowManager windowManager) { _windowManager = windowManager; } public void OpenWindow() { dynamic settings = new ExpandoObject(); settings.WindowStartupLocation = WindowStartupLocation.Manual; _windowManager.ShowWindow(new ShellViewModel(_windowManager), null, settings); } }
こんな感じになる。
親ウィンドウを閉じると終了する。
Custom Window Managers
- プロジェクトにAppWindowManagerを追加する。
// <AppWindowManager.cs> public class AppWindowManager : WindowManager { protected override Window EnsureWindow(object model, object view, bool isDialog) { Window window = base.EnsureWindow(model, view, isDialog); window.SizeToContent = SizeToContent.Manual; window.Width = 300; window.Height = 200; return window; } }
- AppBootstrapperで、WindowManagerをAppWindowManagerに差し替える
// <AppBootstrapper.cs :: Configure内> // batch.AddExportedValue<IWindowManager>(new WindowManager()); // ↓↓↓↓↓↓↓ batch.AddExportedValue<IWindowManager>(new AppWindowManager());
こんな感じになった。