static void Main(string[] args) { #if !NET461 Thread.CurrentThread.TrySetApartmentState(ApartmentState.STA); #endif try { var vm = new MainWindowViewModel(); var factory = new DemoDockFactory(); IDock layout = null; string path = ModelSerializer.GetBasePath("Layout.json"); if (ModelSerializer.Exists(path)) { layout = ModelSerializer.Load <RootDock>(path); } BuildAvaloniaApp().Start <MainWindow>(() => { // NOTE: Initialize layout after main window was created so child windows can be created. vm.Factory = factory; vm.Layout = layout ?? vm.Factory.CreateLayout(); vm.Factory.InitLayout(vm.Layout, vm); return(vm); }); vm.Factory.CloseLayout(vm.Layout); ModelSerializer.Save(path, vm.Layout); } catch (Exception ex) { Print(ex); } }