diff --git a/ILSpy/Docking/DockWorkspace.cs b/ILSpy/Docking/DockWorkspace.cs index 3ad6aaf83..2fe0d0fc2 100644 --- a/ILSpy/Docking/DockWorkspace.cs +++ b/ILSpy/Docking/DockWorkspace.cs @@ -25,6 +25,7 @@ using System.Linq; using System.Reflection; using System.Threading; using System.Threading.Tasks; +using System.Windows.Data; using System.Windows.Threading; using AvalonDock; @@ -50,6 +51,7 @@ namespace ICSharpCode.ILSpy.Docking private readonly IExportProvider exportProvider; private readonly ObservableCollection tabPages = []; + private ReadOnlyCollection toolPanes; readonly SessionSettings sessionSettings; @@ -123,9 +125,11 @@ namespace ICSharpCode.ILSpy.Docking public ReadOnlyObservableCollection TabPages { get; } - private ToolPaneModel[] toolPanes = []; - - public ReadOnlyCollection ToolPanes => toolPanes.AsReadOnly(); + public ReadOnlyCollection ToolPanes => toolPanes ??= exportProvider + .GetExportedValues("ToolPane") + .OrderBy(item => item.Title) + .ToArray() + .AsReadOnly(); public bool ShowToolPane(string contentId) { @@ -181,12 +185,6 @@ namespace ICSharpCode.ILSpy.Docking AddTabPage(); } - toolPanes = exportProvider - .GetExportedValues("ToolPane") - .OrderBy(item => item.Title) - .ToArray(); - OnPropertyChanged(nameof(ToolPanes)); - DockingManager.LayoutUpdateStrategy = this; XmlLayoutSerializer serializer = new XmlLayoutSerializer(DockingManager); serializer.LayoutSerializationCallback += LayoutSerializationCallback; @@ -198,6 +196,9 @@ namespace ICSharpCode.ILSpy.Docking { serializer.LayoutSerializationCallback -= LayoutSerializationCallback; } + + DockingManager.SetBinding(DockingManager.AnchorablesSourceProperty, new Binding(nameof(ToolPanes))); + DockingManager.SetBinding(DockingManager.DocumentsSourceProperty, new Binding(nameof(TabPages))); } void LayoutSerializationCallback(object sender, LayoutSerializationCallbackEventArgs e) diff --git a/ILSpy/MainWindow.xaml b/ILSpy/MainWindow.xaml index 99c5ee08f..a60f6c990 100644 --- a/ILSpy/MainWindow.xaml +++ b/ILSpy/MainWindow.xaml @@ -67,8 +67,6 @@