Skip to content

Commit 861a6a7

Browse files
committed
优化布局管理和事件处理逻辑
- 修改 `DockContainer.cs` 中 `OnCollectionChanged` 方法,增加对 `IsListening` 的检查。 - 移除 `DockWindow.xaml.cs` 中的 `Panel.SaveLayout(panelWriter);` 调用。 - 在 `DockManager.xaml.cs` 中,将 `Unloaded` 事件处理从 `CloseAllWindows` 修改为 `CloseWindows`,并在清空侧边集合时保持一致。 - 调整 `WriteSideDocuments` 和 `ReadSideDocuments` 方法的参数顺序,以提高可读性和一致性。 - 重命名 `DockWindowHelpers.cs` 中的 `CloseAllWindows` 方法为 `CloseWindows`,以与其他方法保持一致。
1 parent 3b0870e commit 861a6a7

File tree

5 files changed

+15
-21
lines changed

5 files changed

+15
-21
lines changed

src/WinUI.Dock/Abstracts/DockContainer.cs

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -58,12 +58,7 @@ protected override void OnRootChanged(DockManager? oldRoot, DockManager? newRoot
5858

5959
private void OnCollectionChanged(object? sender, NotifyCollectionChangedEventArgs e)
6060
{
61-
if (!IsListening)
62-
{
63-
return;
64-
}
65-
66-
if (ValidateChildren())
61+
if (IsListening && ValidateChildren())
6762
{
6863
UnloadChildren();
6964

src/WinUI.Dock/Controls/DockWindow.xaml.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,6 @@ internal void SaveLayout(JsonObject writer)
3434
};
3535

3636
JsonObject panelWriter = [];
37-
3837
Panel.SaveLayout(panelWriter);
3938

4039
writer[nameof(Panel)] = panelWriter;

src/WinUI.Dock/DockManager.xaml.cs

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ public DockManager()
4141
{
4242
DefaultStyleKey = typeof(DockManager);
4343

44-
Unloaded += (_, _) => DockWindowHelpers.CloseAllWindows(this);
44+
Unloaded += (_, _) => DockWindowHelpers.CloseWindows(this);
4545

4646
LeftSide.CollectionChanged += OnSideCollectionChanged;
4747
TopSide.CollectionChanged += OnSideCollectionChanged;
@@ -91,7 +91,7 @@ public void ClearLayout()
9191
RightSide.Clear();
9292
BottomSide.Clear();
9393

94-
DockWindowHelpers.CloseAllWindows(this);
94+
DockWindowHelpers.CloseWindows(this);
9595
}
9696

9797
public string SaveLayout()
@@ -106,10 +106,10 @@ public string SaveLayout()
106106
writer[nameof(Panel)] = panelWriter;
107107
}
108108

109-
writer.WriteSideDocuments(LeftSide, nameof(LeftSide));
110-
writer.WriteSideDocuments(TopSide, nameof(TopSide));
111-
writer.WriteSideDocuments(RightSide, nameof(RightSide));
112-
writer.WriteSideDocuments(BottomSide, nameof(BottomSide));
109+
writer.WriteSideDocuments(nameof(LeftSide), LeftSide);
110+
writer.WriteSideDocuments(nameof(TopSide), TopSide);
111+
writer.WriteSideDocuments(nameof(RightSide), RightSide);
112+
writer.WriteSideDocuments(nameof(BottomSide), BottomSide);
113113

114114
JsonArray windows = [];
115115

@@ -141,22 +141,22 @@ public void LoadLayout(string layout)
141141

142142
if (reader.ContainsKey(nameof(Panel)))
143143
{
144-
Panel = new() { Root = this };
144+
Panel = new();
145145
Panel.LoadLayout(reader[nameof(Panel)]!.AsObject());
146146

147147
InvokeCreateNewDocument(Panel.Children);
148148
}
149149

150-
reader.ReadSideDocuments(LeftSide, nameof(LeftSide));
150+
reader.ReadSideDocuments(nameof(LeftSide), LeftSide);
151151
InvokeCreateNewDocument(LeftSide);
152152

153-
reader.ReadSideDocuments(TopSide, nameof(TopSide));
153+
reader.ReadSideDocuments(nameof(TopSide), TopSide);
154154
InvokeCreateNewDocument(TopSide);
155155

156-
reader.ReadSideDocuments(RightSide, nameof(RightSide));
156+
reader.ReadSideDocuments(nameof(RightSide), RightSide);
157157
InvokeCreateNewDocument(RightSide);
158158

159-
reader.ReadSideDocuments(BottomSide, nameof(BottomSide));
159+
reader.ReadSideDocuments(nameof(BottomSide), BottomSide);
160160
InvokeCreateNewDocument(BottomSide);
161161

162162
foreach (JsonObject windowReader in reader["Windows"]!.AsArray().Cast<JsonObject>())

src/WinUI.Dock/Helpers/DockWindowHelpers.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ public static DockWindow[] GetWindows(DockManager manager)
3434
return windows.TryGetValue(manager, out List<DockWindow>? value) ? [.. value] : [];
3535
}
3636

37-
public static void CloseAllWindows(DockManager manager)
37+
public static void CloseWindows(DockManager manager)
3838
{
3939
if (windows.TryGetValue(manager, out List<DockWindow>? value))
4040
{

src/WinUI.Dock/Helpers/LayoutHelpers.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ public static void ReadDockContainerChildren(this JsonObject reader, DockContain
8585
}
8686
}
8787

88-
public static void WriteSideDocuments(this JsonObject writer, ObservableCollection<Document> side, string sideName)
88+
public static void WriteSideDocuments(this JsonObject writer, string sideName, ObservableCollection<Document> side)
8989
{
9090
JsonArray documents = [];
9191

@@ -100,7 +100,7 @@ public static void WriteSideDocuments(this JsonObject writer, ObservableCollecti
100100
writer[sideName] = documents;
101101
}
102102

103-
public static void ReadSideDocuments(this JsonObject reader, ObservableCollection<Document> side, string sideName)
103+
public static void ReadSideDocuments(this JsonObject reader, string sideName, ObservableCollection<Document> side)
104104
{
105105
foreach (JsonObject documentReader in reader[sideName]!.AsArray().Cast<JsonObject>())
106106
{

0 commit comments

Comments
 (0)