public static void LoadLayout(DockingManager manager, ILayoutViewModelResolver layoutResolver)
        {
            var layoutSerializer      = new XmlLayoutSerializer(manager);
            HashSet <string> resolved = new HashSet <string>();

            layoutSerializer.LayoutSerializationCallback += (s, e) =>
            {
                if (e.Model?.ContentId != null && e.Model is LayoutAnchorable anchorable && !resolved.Contains(e.Model.ContentId))
                {
                    var tool = layoutResolver.ResolveViewModel(e.Model.ContentId);
                    resolved.Add(e.Model.ContentId);

                    if (tool != null)
                    {
                        e.Content       = tool;
                        tool.Visibility = anchorable.IsVisible ? Visibility.Visible : Visibility.Hidden;
                        return;
                    }
                }

                // Don't create any panels if something went wrong.
                e.Cancel = true;
            };

            if (File.Exists("dock.layout"))
            {
                layoutSerializer.Deserialize("dock.layout");
            }
            else
            {
                layoutResolver.LoadDefault();
            }
        }
        public MainWindowWithDocking(IMainWindowHolder mainWindowHolder,
                                     IDocumentManager documentManager,
                                     ILayoutViewModelResolver layoutViewModelResolver,
                                     IFileSystem fileSystem)
        {
            this.fileSystem     = fileSystem;
            avaloniaDockAdapter = new AvaloniaDockAdapter(documentManager, layoutViewModelResolver);

            InitializeComponent();
            this.AttachDevTools();
            mainWindowHolder.Window = this;
            PersistentDockDataTemplate.DocumentManager = documentManager;
        }
        public MainWindowWithDocking(IMainWindowHolder mainWindowHolder,
                                     IDocumentManager documentManager,
                                     ILayoutViewModelResolver layoutViewModelResolver,
                                     IFileSystem fileSystem)
        {
            this.fileSystem     = fileSystem;
            avaloniaDockAdapter = new AvaloniaDockAdapter(documentManager, layoutViewModelResolver);

            // we have to do it before InitializeComponent!
            var primaryScreen = Screens.Primary ?? Screens.All.FirstOrDefault();

            GlobalApplication.HighDpi = (primaryScreen?.PixelDensity ?? 1) > 1.5f;

            InitializeComponent();
            this.AttachDevTools();
            mainWindowHolder.Window = this;
            PersistentDockDataTemplate.DocumentManager = documentManager;
        }
Beispiel #4
0
        public static void LoadLayout(DockingManager manager, ILayoutViewModelResolver layoutResolver, IFileSystem fileSystem)
        {
            var layoutSerializer      = new XmlLayoutSerializer(manager);
            HashSet <string> resolved = new HashSet <string>();

            layoutSerializer.LayoutSerializationCallback += (s, e) =>
            {
                if (e.Model?.ContentId != null && e.Model is LayoutAnchorable anchorable && !resolved.Contains(e.Model.ContentId))
                {
                    var tool = layoutResolver.ResolveViewModel(e.Model.ContentId);
                    resolved.Add(e.Model.ContentId);

                    if (tool != null)
                    {
                        e.Content       = tool;
                        tool.Visibility = anchorable.IsVisible;
                        return;
                    }
                }

                // Don't create any panels if something went wrong.
                e.Cancel = true;
            };

            if (fileSystem.Exists(DockSettingsFile))
            {
                try
                {
                    layoutSerializer.Deserialize(fileSystem.OpenRead(DockSettingsFile));
                }
                catch (System.Exception _)
                {
                    layoutResolver.LoadDefault();
                }
            }
            else
            {
                layoutResolver.LoadDefault();
            }
        }