diff --git a/.gitmodules b/.gitmodules
index 8ff476a1c..2010146a2 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -7,3 +7,6 @@
[submodule "WoWPacketParser"]
path = WoWPacketParser
url = https://github.com/BAndysc/WoWPacketParser
+[submodule "Prism.Avalonia"]
+ path = Prism.Avalonia
+ url = https://github.com/BAndysc/Prism.Avalonia
diff --git a/Avalonia.props b/Avalonia.props
index 7bff736bc..e80105b46 100644
--- a/Avalonia.props
+++ b/Avalonia.props
@@ -5,7 +5,7 @@
-
+
diff --git a/AvaloniaEdit b/AvaloniaEdit
index b000803d4..db05f2c62 160000
--- a/AvaloniaEdit
+++ b/AvaloniaEdit
@@ -1 +1 @@
-Subproject commit b000803d4e0fd38236b4bbec6272faf3d86b10e7
+Subproject commit db05f2c624bec075aff50d253a90430e867c055b
diff --git a/AvaloniaStyles/Controls/ExtendedWindow.cs b/AvaloniaStyles/Controls/ExtendedWindow.cs
index ae58694ce..0ded54bd5 100644
--- a/AvaloniaStyles/Controls/ExtendedWindow.cs
+++ b/AvaloniaStyles/Controls/ExtendedWindow.cs
@@ -113,8 +113,7 @@ private void UpdateChromeHints(ExtendedWindowChrome chrome)
}
else
{
- ExtendClientAreaChromeHints &= ~ExtendClientAreaChromeHints.SystemChrome;
- ExtendClientAreaChromeHints |= ExtendClientAreaChromeHints.NoChrome;
+ ExtendClientAreaChromeHints = ExtendClientAreaChromeHints.NoChrome;
}
}
diff --git a/AvaloniaStyles/Controls/GroupingListBox.axaml.cs b/AvaloniaStyles/Controls/GroupingListBox.axaml.cs
index d3ca20ac0..6726838c7 100644
--- a/AvaloniaStyles/Controls/GroupingListBox.axaml.cs
+++ b/AvaloniaStyles/Controls/GroupingListBox.axaml.cs
@@ -270,9 +270,9 @@ private void SelectIndex(ListBox listbox, int index)
(listbox.ItemContainerGenerator.ContainerFromIndex(listbox.SelectedIndex)).Focus();
}
- public static T? FindParent(IVisual obj) where T : Control
+ public static T? FindParent(IVisual? obj) where T : Control
{
- obj = obj.VisualParent;
+ obj = obj?.VisualParent;
while (obj != null)
{
if (obj is T parent)
diff --git a/AvaloniaStyles/Styles/BigSur/Button.xaml b/AvaloniaStyles/Styles/BigSur/Button.xaml
index 9c3108bd1..114f43369 100644
--- a/AvaloniaStyles/Styles/BigSur/Button.xaml
+++ b/AvaloniaStyles/Styles/BigSur/Button.xaml
@@ -9,8 +9,11 @@
-
+
+
diff --git a/AvaloniaStyles/Styles/BigSur/TextBox.xaml b/AvaloniaStyles/Styles/BigSur/TextBox.xaml
index 2b479afbc..f92e987f0 100644
--- a/AvaloniaStyles/Styles/BigSur/TextBox.xaml
+++ b/AvaloniaStyles/Styles/BigSur/TextBox.xaml
@@ -2,6 +2,7 @@
xmlns:controls1="clr-namespace:AvaloniaStyles.Controls"
xmlns:avaloniaEdit="https://github.com/avaloniaui/avaloniaedit">
-
-
-
diff --git a/AvaloniaStyles/Styles/BigSur/Window.xaml b/AvaloniaStyles/Styles/BigSur/Window.xaml
index c5b7948bf..39c415216 100644
--- a/AvaloniaStyles/Styles/BigSur/Window.xaml
+++ b/AvaloniaStyles/Styles/BigSur/Window.xaml
@@ -153,22 +153,24 @@
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
diff --git a/AvaloniaStyles/Styles/Catalina/Button.xaml b/AvaloniaStyles/Styles/Catalina/Button.xaml
index 93a3464f9..b7405e7e9 100644
--- a/AvaloniaStyles/Styles/Catalina/Button.xaml
+++ b/AvaloniaStyles/Styles/Catalina/Button.xaml
@@ -7,7 +7,7 @@
-
diff --git a/AvaloniaStyles/Styles/Catalina/TextBox.xaml b/AvaloniaStyles/Styles/Catalina/TextBox.xaml
index 2afb54474..10728593c 100644
--- a/AvaloniaStyles/Styles/Catalina/TextBox.xaml
+++ b/AvaloniaStyles/Styles/Catalina/TextBox.xaml
@@ -2,6 +2,7 @@
xmlns:controls1="clr-namespace:AvaloniaStyles.Controls"
xmlns:avaloniaEdit="https://github.com/avaloniaui/avaloniaedit">
-
-
diff --git a/Directory.Build.props b/Directory.Build.props
index 084a9dc2c..7a421b194 100644
--- a/Directory.Build.props
+++ b/Directory.Build.props
@@ -2,6 +2,6 @@
CS0067,CS3021,CS1998,CA1416
- 0.10.0
+ 0.10.7
\ No newline at end of file
diff --git a/Dock b/Dock
index 90efe5659..c321f6050 160000
--- a/Dock
+++ b/Dock
@@ -1 +1 @@
-Subproject commit 90efe5659df5cc6d16a3e6290608ab4221fcb665
+Subproject commit c321f605085f285c3476522b7c2f2057bd44a358
diff --git a/Prism.Avalonia b/Prism.Avalonia
new file mode 160000
index 000000000..37cdcb891
--- /dev/null
+++ b/Prism.Avalonia
@@ -0,0 +1 @@
+Subproject commit 37cdcb891b519df6302c284d123973d81ba47981
diff --git a/WDE.Common.Avalonia/DnD/DragAndDrop.cs b/WDE.Common.Avalonia/DnD/DragAndDrop.cs
index 05a1436eb..db3b2ff24 100644
--- a/WDE.Common.Avalonia/DnD/DragAndDrop.cs
+++ b/WDE.Common.Avalonia/DnD/DragAndDrop.cs
@@ -533,7 +533,7 @@ private static void OnTreeViewDrop(object? sender, DragEventArgs e)
if (child == null)
return default;
- IVisual parentObject = child.VisualParent;
+ IVisual? parentObject = child.VisualParent;
if (parentObject == null)
return default;
@@ -551,7 +551,7 @@ private static void OnTreeViewDrop(object? sender, DragEventArgs e)
if (child == null)
return default;
- IVisual parentObject = child.VisualParent;
+ IVisual? parentObject = child.VisualParent;
if (parentObject == null)
return default;
@@ -630,7 +630,7 @@ public void Update(TreeView treeView, ITreeItemContainerGenerator itemContainerG
else
{
double y = 0;
- IVisual parent = container.VisualParent;
+ IVisual? parent = container.VisualParent;
while (parent != null && parent != treeView)
{
y += parent.Bounds.Y;
diff --git a/WDE.Common.Avalonia/Utils/ViewBind.cs b/WDE.Common.Avalonia/Utils/ViewBind.cs
index 7e4895977..35b1e4e8c 100644
--- a/WDE.Common.Avalonia/Utils/ViewBind.cs
+++ b/WDE.Common.Avalonia/Utils/ViewBind.cs
@@ -1,6 +1,7 @@
using System;
using Avalonia;
using Avalonia.Controls;
+using Avalonia.Controls.Templates;
using WDE.Common.Windows;
namespace WDE.Common.Avalonia.Utils
@@ -43,52 +44,31 @@ private static void SetContentProperty(IAvaloniaObject targetLocation, object? v
}
}
}
-
- public class ToolBarBind
+
+ public class ToolbarDataTemplate : IDataTemplate
{
- public static readonly AvaloniaProperty ModelProperty = AvaloniaProperty.RegisterAttached("Model",
- typeof(ToolBarBind),coerce: OnModelChanged);
-
- public static object GetModel(Control control) => control.GetValue(ModelProperty);
- public static void SetModel(Control control, object value) => control.SetValue(ModelProperty, value);
-
- public static bool TryResolveToolBar(object viewModel, out object? toolbar)
+ public static IDataTemplate Template { get; } = new ToolbarDataTemplate();
+ public IControl Build(object param)
{
- toolbar = null;
if (ViewBind.AppViewLocator != null &&
- ViewBind.AppViewLocator.TryResolveToolBar(viewModel.GetType(), out var toolbarType))
+ ViewBind.AppViewLocator.TryResolveToolBar(param.GetType(), out var toolbarType))
{
try
{
- toolbar = Activator.CreateInstance(toolbarType);
+ return (IControl)Activator.CreateInstance(toolbarType)!;
}
catch (Exception e)
{
Console.WriteLine(e);
- toolbar = new TextBlock() { Text = e.ToString() };
+ return new TextBlock() { Text = e.ToString() };
}
}
-
- return toolbar != null;
- }
-
- private static object OnModelChanged(IAvaloniaObject targetLocation, object viewModel)
- {
- if (TryResolveToolBar(viewModel, out var view))
- SetContentProperty(targetLocation, view);
- else
- SetContentProperty(targetLocation, new Panel());
-
- return viewModel;
+ return new Control();
}
- private static void SetContentProperty(IAvaloniaObject targetLocation, object? view)
+ public bool Match(object data)
{
- if (view != null && targetLocation != null)
- {
- Type? type = targetLocation.GetType();
- type.GetProperty("Content")?.SetValue(targetLocation, view);
- }
+ return data is not IControl && data is not string;
}
}
}
\ No newline at end of file
diff --git a/WoWDatabaseEditor.sln b/WoWDatabaseEditor.sln
index 2fac4a70d..ba4da0b1c 100644
--- a/WoWDatabaseEditor.sln
+++ b/WoWDatabaseEditor.sln
@@ -159,6 +159,10 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WDE.SkyFireMySqlDatabase",
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WDE.ProjectSkyFire", "WDE.ProjectSkyFire\WDE.ProjectSkyFire.csproj", "{2B3DFEB9-808F-4EC4-B848-3C2533B40B39}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Prism.Avalonia", "Prism.Avalonia\src\Prism.Avalonia\Prism.Avalonia.csproj", "{B9498EA0-8186-4770-883A-B3CD9B1705BD}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Prism.Unity.Avalonia", "Prism.Avalonia\src\Prism.Unity.Avalonia\Prism.Unity.Avalonia.csproj", "{10ACA1B2-02DE-4B04-A151-9087989B6ADE}"
+EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WDE.SourceCodeIntegrationEditor", "WDE.SourceCodeIntegrationEditor\WDE.SourceCodeIntegrationEditor.csproj", "{B0F1E33D-8CD2-4839-8F87-E8835F5F8D0B}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WDE.PacketViewer", "WDE.PacketViewer\WDE.PacketViewer.csproj", "{B421A454-BCA5-4B10-B0BD-BBEB5AAD3294}"
@@ -477,6 +481,14 @@ Global
{8B25EEAE-2DDD-4D62-A426-619FE21D2711}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8B25EEAE-2DDD-4D62-A426-619FE21D2711}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8B25EEAE-2DDD-4D62-A426-619FE21D2711}.Release|Any CPU.Build.0 = Release|Any CPU
+ {B9498EA0-8186-4770-883A-B3CD9B1705BD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {B9498EA0-8186-4770-883A-B3CD9B1705BD}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {B9498EA0-8186-4770-883A-B3CD9B1705BD}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {B9498EA0-8186-4770-883A-B3CD9B1705BD}.Release|Any CPU.Build.0 = Release|Any CPU
+ {10ACA1B2-02DE-4B04-A151-9087989B6ADE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {10ACA1B2-02DE-4B04-A151-9087989B6ADE}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {10ACA1B2-02DE-4B04-A151-9087989B6ADE}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {10ACA1B2-02DE-4B04-A151-9087989B6ADE}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/WoWDatabaseEditorCore.Avalonia/Docking/DockFactory.cs b/WoWDatabaseEditorCore.Avalonia/Docking/DockFactory.cs
index f3ace200e..a31ee1a2d 100644
--- a/WoWDatabaseEditorCore.Avalonia/Docking/DockFactory.cs
+++ b/WoWDatabaseEditorCore.Avalonia/Docking/DockFactory.cs
@@ -11,8 +11,8 @@ namespace WoWDatabaseEditorCore.Avalonia.Docking
{
public class DockFactory : Factory
{
- public override IDocumentDock CreateDocumentDock() => new FocusAwareDocumentDock();
- public override IToolDock CreateToolDock() => new FocusAwareToolDock();
+ public override IDocumentDock CreateDocumentDock() => new FocusAwareDocumentDock() {CanFloat = false};
+ public override IToolDock CreateToolDock() => new FocusAwareToolDock() {CanFloat = false};
public void AddDocument(IDock layout, AvaloniaDocumentDockWrapper document)
{
@@ -36,6 +36,7 @@ public void AddTool(IDock layout, AvaloniaToolDockWrapper toolWrapper)
Id = "tool",
Title = "Tools",
Proportion = 0.2f,
+ CanFloat = false
};
AddDockable(layout, CreateSplitterDockable());
AddDockable(layout, toolDock);
@@ -55,6 +56,7 @@ public override IRootDock CreateLayout()
Title = "MainLayout",
Proportion = 1,
IsCollapsable = false,
+ CanFloat = false,
Orientation = Orientation.Horizontal,
ActiveDockable = null,
VisibleDockables = CreateList
diff --git a/WoWDatabaseEditorCore.Avalonia/Views/MainWindow.xaml b/WoWDatabaseEditorCore.Avalonia/Views/MainWindow.xaml
index 4866184fa..239f9d6a9 100644
--- a/WoWDatabaseEditorCore.Avalonia/Views/MainWindow.xaml
+++ b/WoWDatabaseEditorCore.Avalonia/Views/MainWindow.xaml
@@ -55,7 +55,7 @@
-
+
diff --git a/WoWDatabaseEditorCore.Avalonia/Views/MainWindowWithDocking.xaml b/WoWDatabaseEditorCore.Avalonia/Views/MainWindowWithDocking.xaml
index 9e3d928de..d9f2fceb0 100644
--- a/WoWDatabaseEditorCore.Avalonia/Views/MainWindowWithDocking.xaml
+++ b/WoWDatabaseEditorCore.Avalonia/Views/MainWindowWithDocking.xaml
@@ -43,7 +43,7 @@
-
+
diff --git a/WoWDatabaseEditorCore.Avalonia/WoWDatabaseEditorCore.Avalonia.csproj b/WoWDatabaseEditorCore.Avalonia/WoWDatabaseEditorCore.Avalonia.csproj
index 9dd2ee33e..3cdfc937e 100644
--- a/WoWDatabaseEditorCore.Avalonia/WoWDatabaseEditorCore.Avalonia.csproj
+++ b/WoWDatabaseEditorCore.Avalonia/WoWDatabaseEditorCore.Avalonia.csproj
@@ -20,11 +20,11 @@
-
+