Skip to content

Commit 44da7ce

Browse files
Fix broken Window menu and ResetLayout
1 parent 51aac5f commit 44da7ce

File tree

2 files changed

+10
-11
lines changed

2 files changed

+10
-11
lines changed

ILSpy/Docking/DockWorkspace.cs

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
using System.Reflection;
2626
using System.Threading;
2727
using System.Threading.Tasks;
28+
using System.Windows.Data;
2829
using System.Windows.Threading;
2930

3031
using 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)

ILSpy/MainWindow.xaml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,8 +67,6 @@
6767

6868
<avalondock:DockingManager x:Name="DockManager"
6969
DataContext="{Binding Workspace}"
70-
AnchorablesSource="{Binding ToolPanes}"
71-
DocumentsSource="{Binding TabPages}"
7270
ActiveContent="{Binding ActiveTabPage, Mode=TwoWay, Converter={docking:TabPageGuardConverter}}"
7371
AllowMixedOrientation="True">
7472

0 commit comments

Comments
 (0)