2525using System . Reflection ;
2626using System . Threading ;
2727using System . Threading . Tasks ;
28+ using System . Windows . Data ;
2829using System . Windows . Threading ;
2930
3031using AvalonDock ;
@@ -50,6 +51,7 @@ public class DockWorkspace : ObservableObject, ILayoutUpdateStrategy
5051 private readonly IExportProvider exportProvider ;
5152
5253 private readonly ObservableCollection < TabPageModel > tabPages = [ ] ;
54+ private ReadOnlyCollection < ToolPaneModel > toolPanes ;
5355
5456 readonly SessionSettings sessionSettings ;
5557
@@ -123,9 +125,11 @@ public void AddTabPage(TabPageModel tabPage = null)
123125
124126 public ReadOnlyObservableCollection < TabPageModel > TabPages { get ; }
125127
126- private ToolPaneModel [ ] toolPanes = [ ] ;
127-
128- public ReadOnlyCollection < ToolPaneModel > ToolPanes => toolPanes . AsReadOnly ( ) ;
128+ public ReadOnlyCollection < ToolPaneModel > ToolPanes => toolPanes ??= exportProvider
129+ . GetExportedValues < ToolPaneModel > ( "ToolPane" )
130+ . OrderBy ( item => item . Title )
131+ . ToArray ( )
132+ . AsReadOnly ( ) ;
129133
130134 public bool ShowToolPane ( string contentId )
131135 {
@@ -181,12 +185,6 @@ public void InitializeLayout()
181185 AddTabPage ( ) ;
182186 }
183187
184- toolPanes = exportProvider
185- . GetExportedValues < ToolPaneModel > ( "ToolPane" )
186- . OrderBy ( item => item . Title )
187- . ToArray ( ) ;
188- OnPropertyChanged ( nameof ( ToolPanes ) ) ;
189-
190188 DockingManager . LayoutUpdateStrategy = this ;
191189 XmlLayoutSerializer serializer = new XmlLayoutSerializer ( DockingManager ) ;
192190 serializer . LayoutSerializationCallback += LayoutSerializationCallback ;
@@ -198,6 +196,9 @@ public void InitializeLayout()
198196 {
199197 serializer . LayoutSerializationCallback -= LayoutSerializationCallback ;
200198 }
199+
200+ DockingManager . SetBinding ( DockingManager . AnchorablesSourceProperty , new Binding ( nameof ( ToolPanes ) ) ) ;
201+ DockingManager . SetBinding ( DockingManager . DocumentsSourceProperty , new Binding ( nameof ( TabPages ) ) ) ;
201202 }
202203
203204 void LayoutSerializationCallback ( object sender , LayoutSerializationCallbackEventArgs e )
0 commit comments