diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 286a5c8..530c9d4 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -20,14 +20,14 @@ jobs: fetch-depth: 0 ref: release - name: Build - run: dotnet build Needlework.Net.Desktop -c Release + run: dotnet build Needlework.Net -c Release - name: Publish - run: dotnet publish Needlework.Net.Desktop -c Release -p:PublishSingleFile=true -p:IncludeNativeLibrariesForSelfExtract=true -p:DebugType=None -p:DebugSymbols=false -o publish -r win-x64 --self-contained=false + run: dotnet publish Needlework.Net -c Release -p:PublishSingleFile=true -p:IncludeNativeLibrariesForSelfExtract=true -p:DebugType=None -p:DebugSymbols=false -o publish -r win-x64 --self-contained=false - name: Get Version id: version shell: powershell run: | - $xml=[xml](Get-Content .\Needlework.Net.Desktop\Needlework.Net.Desktop.csproj) + $xml=[xml](Get-Content .\Needlework.Net\Needlework.Net.csproj) $ver=($xml.Project.PropertyGroup).AssemblyVersion $ver="VERSION=$ver" $ver=$ver -replace '\s','' diff --git a/Needlework.Net.Core.Tests/LcuSchemaHandlerTest.cs b/Needlework.Net.Core.Tests/LcuSchemaHandlerTest.cs deleted file mode 100644 index 62ab554..0000000 --- a/Needlework.Net.Core.Tests/LcuSchemaHandlerTest.cs +++ /dev/null @@ -1,27 +0,0 @@ -using Xunit.Abstractions; - -namespace Needlework.Net.Core.Tests; - -public class LcuSchemaHandlerTest -{ - private readonly ITestOutputHelper _output; - - internal HttpClient HttpClient { get; } = new(); - - public LcuSchemaHandlerTest(ITestOutputHelper output) - { - _output = output; - } - - [Fact] - public async Task PluginsTestAsync() - { - var reader = new LcuSchemaHandler(await Resources.GetOpenApiDocumentAsync(HttpClient)); - - var plugins = reader.Plugins.Keys.ToList(); - foreach (var plugin in plugins) - _output.WriteLine($"Plugin: {plugin}"); - - Assert.True(plugins.Count > 0); - } -} \ No newline at end of file diff --git a/Needlework.Net.Core.Tests/Needlework.Net.Core.Tests.csproj b/Needlework.Net.Core.Tests/Needlework.Net.Core.Tests.csproj deleted file mode 100644 index 48930a3..0000000 --- a/Needlework.Net.Core.Tests/Needlework.Net.Core.Tests.csproj +++ /dev/null @@ -1,27 +0,0 @@ - - - - net8.0-windows - enable - enable - - false - true - - - - - - - - - - - - - - - - - - diff --git a/Needlework.Net.Core.Tests/ResourcesTest.cs b/Needlework.Net.Core.Tests/ResourcesTest.cs deleted file mode 100644 index 22ef6a0..0000000 --- a/Needlework.Net.Core.Tests/ResourcesTest.cs +++ /dev/null @@ -1,23 +0,0 @@ -using Xunit.Abstractions; - -namespace Needlework.Net.Core.Tests; - -public class ResourcesTest -{ - private readonly ITestOutputHelper _output; - - internal HttpClient HttpClient { get; } = new(); - - public ResourcesTest(ITestOutputHelper output) - { - _output = output; - } - - [Fact] - public async Task DocumentTestAsync() - { - var document = await Resources.GetOpenApiDocumentAsync(HttpClient); - - Assert.True(document.Info.Title == "LCU SCHEMA"); - } -} \ No newline at end of file diff --git a/Needlework.Net.Core/Needlework.Net.Core.csproj b/Needlework.Net.Core/Needlework.Net.Core.csproj deleted file mode 100644 index 9fcb20c..0000000 --- a/Needlework.Net.Core/Needlework.Net.Core.csproj +++ /dev/null @@ -1,14 +0,0 @@ - - - - net8.0-windows - enable - enable - - - - - - - - diff --git a/Needlework.Net.Desktop/Messages/DataReadyMessage.cs b/Needlework.Net.Desktop/Messages/DataReadyMessage.cs deleted file mode 100644 index 4e27679..0000000 --- a/Needlework.Net.Desktop/Messages/DataReadyMessage.cs +++ /dev/null @@ -1,9 +0,0 @@ -using CommunityToolkit.Mvvm.Messaging.Messages; -using Needlework.Net.Core; - -namespace Needlework.Net.Desktop.Messages -{ - public class DataReadyMessage(LcuSchemaHandler handler) : ValueChangedMessage(handler) - { - } -} diff --git a/Needlework.Net.Desktop/Messages/DataRequestMessage.cs b/Needlework.Net.Desktop/Messages/DataRequestMessage.cs deleted file mode 100644 index 235f73f..0000000 --- a/Needlework.Net.Desktop/Messages/DataRequestMessage.cs +++ /dev/null @@ -1,9 +0,0 @@ -using CommunityToolkit.Mvvm.Messaging.Messages; -using Needlework.Net.Core; - -namespace Needlework.Net.Desktop.Messages -{ - public class DataRequestMessage : RequestMessage - { - } -} diff --git a/Needlework.Net.Desktop/Messages/OopsiesWindowCanceledMessage.cs b/Needlework.Net.Desktop/Messages/OopsiesWindowCanceledMessage.cs deleted file mode 100644 index 9b766ff..0000000 --- a/Needlework.Net.Desktop/Messages/OopsiesWindowCanceledMessage.cs +++ /dev/null @@ -1,8 +0,0 @@ -using CommunityToolkit.Mvvm.Messaging.Messages; - -namespace Needlework.Net.Desktop.Messages -{ - public class OopsiesWindowCanceledMessage(object? data) : ValueChangedMessage(data) - { - } -} diff --git a/Needlework.Net.Desktop/Messages/OopsiesWindowRequestedMessage.cs b/Needlework.Net.Desktop/Messages/OopsiesWindowRequestedMessage.cs deleted file mode 100644 index 8288e7a..0000000 --- a/Needlework.Net.Desktop/Messages/OopsiesWindowRequestedMessage.cs +++ /dev/null @@ -1,8 +0,0 @@ -using CommunityToolkit.Mvvm.Messaging.Messages; - -namespace Needlework.Net.Desktop.Messages -{ - public class OopsiesWindowRequestedMessage(string text) : ValueChangedMessage(text) - { - } -} diff --git a/Needlework.Net.Desktop/Services/WindowService.cs b/Needlework.Net.Desktop/Services/WindowService.cs deleted file mode 100644 index 0d331e4..0000000 --- a/Needlework.Net.Desktop/Services/WindowService.cs +++ /dev/null @@ -1,48 +0,0 @@ -using CommunityToolkit.Mvvm.Messaging; -using Needlework.Net.Desktop.Messages; -using Needlework.Net.Desktop.ViewModels; -using Needlework.Net.Desktop.Views; -using System; - -namespace Needlework.Net.Desktop.Services -{ - public class WindowService : IRecipient - { - public IServiceProvider ServiceProvider { get; } - - public OopsiesWindow? OopsiesWindow { get; set; } - - public WindowService(IServiceProvider serviceProvider) - { - ServiceProvider = serviceProvider; - - WeakReferenceMessenger.Default.Register(this); - } - - public void ShowOopsiesWindow(string text) - { - if (OopsiesWindow != null) OopsiesWindow!.Close(); - - var window = new OopsiesWindow(); - window.DataContext = new OopsiesWindowViewModel(text); - window.Show(App.MainWindow!); - window.Closed += OnOopsiesWindowClosed; - OopsiesWindow = window; - } - - public void OnOopsiesWindowClosed(object? sender, EventArgs e) - { - if (sender == null) return; - - var window = (OopsiesWindow)sender; - window.DataContext = null; - window.Closed -= OnOopsiesWindowClosed; - OopsiesWindow = null; - } - - public void Receive(OopsiesWindowCanceledMessage message) - { - if (OopsiesWindow is OopsiesWindow window) window.Close(); - } - } -} diff --git a/Needlework.Net.Desktop/ViewModels/AboutViewModel.cs b/Needlework.Net.Desktop/ViewModels/AboutViewModel.cs deleted file mode 100644 index d9f09a0..0000000 --- a/Needlework.Net.Desktop/ViewModels/AboutViewModel.cs +++ /dev/null @@ -1,9 +0,0 @@ -namespace Needlework.Net.Desktop.ViewModels -{ - public class AboutViewModel : PageBase - { - public AboutViewModel() : base("About", "info-circle") - { - } - } -} diff --git a/Needlework.Net.Desktop/ViewModels/OopsiesWindowViewModel.cs b/Needlework.Net.Desktop/ViewModels/OopsiesWindowViewModel.cs deleted file mode 100644 index 71c1915..0000000 --- a/Needlework.Net.Desktop/ViewModels/OopsiesWindowViewModel.cs +++ /dev/null @@ -1,29 +0,0 @@ -using CommunityToolkit.Mvvm.ComponentModel; -using CommunityToolkit.Mvvm.Input; -using CommunityToolkit.Mvvm.Messaging; -using Needlework.Net.Desktop.Messages; -using System.Diagnostics; -using System.IO; - -namespace Needlework.Net.Desktop.ViewModels -{ - public partial class OopsiesWindowViewModel(string text) : ObservableObject - { - public string Text { get; } = text; - - [RelayCommand] - private void OpenDefaultEditor() - { - var temp = Path.GetTempFileName().Replace(".tmp", ".json"); - File.WriteAllText(temp, Text); - Process.Start("explorer", "\"" + temp + "\""); - CloseDialog(); - } - - [RelayCommand] - private void CloseDialog() - { - WeakReferenceMessenger.Default.Send(new OopsiesWindowCanceledMessage(null)); - } - } -} diff --git a/Needlework.Net.Desktop/Views/AboutView.axaml b/Needlework.Net.Desktop/Views/AboutView.axaml deleted file mode 100644 index 37a811f..0000000 --- a/Needlework.Net.Desktop/Views/AboutView.axaml +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - - - - - Blossomi Shymae - - - - - About - - Needlework.Net is the .NET rewrite of Needlework. This tool was made to help others with LCU development. Feel free to ask any questions - or help contribute to the project! Made with love. 💜 - - - - - - - - diff --git a/Needlework.Net.Desktop/Views/OopsiesWindow.axaml b/Needlework.Net.Desktop/Views/OopsiesWindow.axaml deleted file mode 100644 index d81e1ae..0000000 --- a/Needlework.Net.Desktop/Views/OopsiesWindow.axaml +++ /dev/null @@ -1,69 +0,0 @@ - - - - - - Needlework.Net - Oopsies - - - - - This response is too large for Needlework.Net to handle for performance reasons. - - - It can be viewed in an external editor or viewer. - - - - - - diff --git a/Needlework.Net.Desktop/Views/OopsiesWindow.axaml.cs b/Needlework.Net.Desktop/Views/OopsiesWindow.axaml.cs deleted file mode 100644 index e77695e..0000000 --- a/Needlework.Net.Desktop/Views/OopsiesWindow.axaml.cs +++ /dev/null @@ -1,13 +0,0 @@ -using FluentAvalonia.UI.Windowing; - -namespace Needlework.Net.Desktop.Views; - -public partial class OopsiesWindow : AppWindow -{ - public OopsiesWindow() - { - InitializeComponent(); - - TitleBar.ExtendsContentIntoTitleBar = true; - } -} \ No newline at end of file diff --git a/Needlework.Net.sln b/Needlework.Net.sln index 03b71a2..add6597 100644 --- a/Needlework.Net.sln +++ b/Needlework.Net.sln @@ -3,11 +3,7 @@ Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio Version 17 VisualStudioVersion = 17.0.31903.59 MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Needlework.Net.Core", "Needlework.Net.Core\Needlework.Net.Core.csproj", "{B14E1B39-3C5A-400F-8148-CC3A4833CBC4}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Needlework.Net.Desktop", "Needlework.Net.Desktop\Needlework.Net.Desktop.csproj", "{7388B579-2DC0-46D6-957A-6683D0FCF5D3}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Needlework.Net.Core.Tests", "Needlework.Net.Core.Tests\Needlework.Net.Core.Tests.csproj", "{0E08542E-6E3F-4825-9F9C-7D6275D6AEC5}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Needlework.Net", "Needlework.Net\Needlework.Net.csproj", "{7388B579-2DC0-46D6-957A-6683D0FCF5D3}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -18,17 +14,9 @@ Global HideSolutionNode = FALSE EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution - {B14E1B39-3C5A-400F-8148-CC3A4833CBC4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B14E1B39-3C5A-400F-8148-CC3A4833CBC4}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B14E1B39-3C5A-400F-8148-CC3A4833CBC4}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B14E1B39-3C5A-400F-8148-CC3A4833CBC4}.Release|Any CPU.Build.0 = Release|Any CPU {7388B579-2DC0-46D6-957A-6683D0FCF5D3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {7388B579-2DC0-46D6-957A-6683D0FCF5D3}.Debug|Any CPU.Build.0 = Debug|Any CPU {7388B579-2DC0-46D6-957A-6683D0FCF5D3}.Release|Any CPU.ActiveCfg = Release|Any CPU {7388B579-2DC0-46D6-957A-6683D0FCF5D3}.Release|Any CPU.Build.0 = Release|Any CPU - {0E08542E-6E3F-4825-9F9C-7D6275D6AEC5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {0E08542E-6E3F-4825-9F9C-7D6275D6AEC5}.Debug|Any CPU.Build.0 = Debug|Any CPU - {0E08542E-6E3F-4825-9F9C-7D6275D6AEC5}.Release|Any CPU.ActiveCfg = Release|Any CPU - {0E08542E-6E3F-4825-9F9C-7D6275D6AEC5}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection EndGlobal diff --git a/Needlework.Net.Desktop/App.axaml b/Needlework.Net/App.axaml similarity index 87% rename from Needlework.Net.Desktop/App.axaml rename to Needlework.Net/App.axaml index 55e49e6..02d7a64 100644 --- a/Needlework.Net.Desktop/App.axaml +++ b/Needlework.Net/App.axaml @@ -1,8 +1,8 @@ diff --git a/Needlework.Net.Desktop/App.axaml.cs b/Needlework.Net/App.axaml.cs similarity index 91% rename from Needlework.Net.Desktop/App.axaml.cs rename to Needlework.Net/App.axaml.cs index 2ec30c9..2ee5261 100644 --- a/Needlework.Net.Desktop/App.axaml.cs +++ b/Needlework.Net/App.axaml.cs @@ -3,12 +3,12 @@ using Avalonia.Controls.ApplicationLifetimes; using Avalonia.Markup.Xaml; using Microsoft.Extensions.DependencyInjection; -using Needlework.Net.Desktop.ViewModels; -using Needlework.Net.Desktop.Views; +using Needlework.Net.ViewModels; +using Needlework.Net.Views; using System; using System.Text.Json; -namespace Needlework.Net.Desktop; +namespace Needlework.Net; public partial class App(IServiceProvider serviceProvider) : Application { diff --git a/Needlework.Net.Desktop/Assets/Icons/home.png b/Needlework.Net/Assets/Icons/home.png similarity index 100% rename from Needlework.Net.Desktop/Assets/Icons/home.png rename to Needlework.Net/Assets/Icons/home.png diff --git a/Needlework.Net.Desktop/Assets/Icons/info-circle.png b/Needlework.Net/Assets/Icons/info-circle.png similarity index 100% rename from Needlework.Net.Desktop/Assets/Icons/info-circle.png rename to Needlework.Net/Assets/Icons/info-circle.png diff --git a/Needlework.Net.Desktop/Assets/Icons/list-alt.png b/Needlework.Net/Assets/Icons/list-alt.png similarity index 100% rename from Needlework.Net.Desktop/Assets/Icons/list-alt.png rename to Needlework.Net/Assets/Icons/list-alt.png diff --git a/Needlework.Net.Desktop/Assets/Icons/plug.png b/Needlework.Net/Assets/Icons/plug.png similarity index 100% rename from Needlework.Net.Desktop/Assets/Icons/plug.png rename to Needlework.Net/Assets/Icons/plug.png diff --git a/Needlework.Net.Desktop/Assets/Icons/terminal.png b/Needlework.Net/Assets/Icons/terminal.png similarity index 100% rename from Needlework.Net.Desktop/Assets/Icons/terminal.png rename to Needlework.Net/Assets/Icons/terminal.png diff --git a/Needlework.Net.Desktop/Assets/about.png b/Needlework.Net/Assets/Users/blossomishymae.png similarity index 100% rename from Needlework.Net.Desktop/Assets/about.png rename to Needlework.Net/Assets/Users/blossomishymae.png diff --git a/Needlework.Net/Assets/Users/community.png b/Needlework.Net/Assets/Users/community.png new file mode 100644 index 0000000..3ab9180 Binary files /dev/null and b/Needlework.Net/Assets/Users/community.png differ diff --git a/Needlework.Net/Assets/Users/dubble.png b/Needlework.Net/Assets/Users/dubble.png new file mode 100644 index 0000000..a5f781b Binary files /dev/null and b/Needlework.Net/Assets/Users/dubble.png differ diff --git a/Needlework.Net/Assets/Users/dysolix.png b/Needlework.Net/Assets/Users/dysolix.png new file mode 100644 index 0000000..1640c88 Binary files /dev/null and b/Needlework.Net/Assets/Users/dysolix.png differ diff --git a/Needlework.Net/Assets/Users/ray.png b/Needlework.Net/Assets/Users/ray.png new file mode 100644 index 0000000..7c04ceb Binary files /dev/null and b/Needlework.Net/Assets/Users/ray.png differ diff --git a/Needlework.Net.Desktop/Assets/app.ico b/Needlework.Net/Assets/app.ico similarity index 100% rename from Needlework.Net.Desktop/Assets/app.ico rename to Needlework.Net/Assets/app.ico diff --git a/Needlework.Net.Desktop/Assets/app.png b/Needlework.Net/Assets/app.png similarity index 100% rename from Needlework.Net.Desktop/Assets/app.png rename to Needlework.Net/Assets/app.png diff --git a/Needlework.Net.Desktop/Controls/BusyArea.axaml b/Needlework.Net/Controls/BusyArea.axaml similarity index 94% rename from Needlework.Net.Desktop/Controls/BusyArea.axaml rename to Needlework.Net/Controls/BusyArea.axaml index 51056a7..4b6ad74 100644 --- a/Needlework.Net.Desktop/Controls/BusyArea.axaml +++ b/Needlework.Net/Controls/BusyArea.axaml @@ -2,9 +2,9 @@ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" - xmlns:controls="using:Needlework.Net.Desktop.Controls" + xmlns:controls="using:Needlework.Net.Controls" mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450" - x:Class="Needlework.Net.Desktop.Controls.BusyArea"> + x:Class="Needlework.Net.Controls.BusyArea"> + + + + + + + + + + + + + Blossomi Shymae + + + + + + About + + Needlework.Net is the .NET rewrite of Needlework. This tool was made to help others with LCU development. Feel free to ask any questions + or help contribute to the project! Made with love. 💜 + + + + + + + + Thanks to the friends and people who made this tool possible... + + + + + + + + + + dysolix + + + + + + + For providing and hosting an auto-generated OpenAPI document of the LCU. + + + + + + + + + + + + + Ray + + + + + + + For guidance, advice, or providing help via HextechDocs. + + + + + + + + + + + + + dubble + + + + + + + For encouraging me to publish Needlework. This project may never have seen the light of day without him. + + + + + + + + + + + + + Third Party Developer Community + + + + + + For providing numerous documentation on the LCU. + + + + + + + + + diff --git a/Needlework.Net.Desktop/Views/AboutView.axaml.cs b/Needlework.Net/Views/AboutView.axaml.cs similarity index 77% rename from Needlework.Net.Desktop/Views/AboutView.axaml.cs rename to Needlework.Net/Views/AboutView.axaml.cs index 6b9dfa0..c76374d 100644 --- a/Needlework.Net.Desktop/Views/AboutView.axaml.cs +++ b/Needlework.Net/Views/AboutView.axaml.cs @@ -1,6 +1,6 @@ using Avalonia.Controls; -namespace Needlework.Net.Desktop.Views; +namespace Needlework.Net.Views; public partial class AboutView : UserControl { diff --git a/Needlework.Net.Desktop/Views/ConsoleView.axaml b/Needlework.Net/Views/ConsoleView.axaml similarity index 90% rename from Needlework.Net.Desktop/Views/ConsoleView.axaml rename to Needlework.Net/Views/ConsoleView.axaml index 76f5097..92c5b21 100644 --- a/Needlework.Net.Desktop/Views/ConsoleView.axaml +++ b/Needlework.Net/Views/ConsoleView.axaml @@ -3,10 +3,12 @@ xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:avaloniaEdit="https://github.com/avaloniaui/avaloniaedit" - xmlns:vm="using:Needlework.Net.Desktop.ViewModels" - xmlns:controls="using:Needlework.Net.Desktop.Controls" + xmlns:ui="using:FluentAvalonia.UI.Controls" + xmlns:uip="using:FluentAvalonia.UI.Controls.Primitives" + xmlns:vm="using:Needlework.Net.ViewModels" + xmlns:controls="using:Needlework.Net.Controls" mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450" - x:Class="Needlework.Net.Desktop.Views.ConsoleView" + x:Class="Needlework.Net.Views.ConsoleView" x:DataType="vm:ConsoleViewModel"> diff --git a/Needlework.Net.Desktop/Views/ConsoleView.axaml.cs b/Needlework.Net/Views/ConsoleView.axaml.cs similarity index 91% rename from Needlework.Net.Desktop/Views/ConsoleView.axaml.cs rename to Needlework.Net/Views/ConsoleView.axaml.cs index 6c9ed0d..6aacf54 100644 --- a/Needlework.Net.Desktop/Views/ConsoleView.axaml.cs +++ b/Needlework.Net/Views/ConsoleView.axaml.cs @@ -4,12 +4,12 @@ using Avalonia.Styling; using AvaloniaEdit; using CommunityToolkit.Mvvm.Messaging; -using Needlework.Net.Desktop.Extensions; -using Needlework.Net.Desktop.Messages; -using Needlework.Net.Desktop.ViewModels; +using Needlework.Net.Extensions; +using Needlework.Net.Messages; +using Needlework.Net.ViewModels; using TextMateSharp.Grammars; -namespace Needlework.Net.Desktop.Views; +namespace Needlework.Net.Views; public partial class ConsoleView : UserControl, IRecipient, IRecipient { diff --git a/Needlework.Net.Desktop/Views/EndpointView.axaml b/Needlework.Net/Views/EndpointView.axaml similarity index 98% rename from Needlework.Net.Desktop/Views/EndpointView.axaml rename to Needlework.Net/Views/EndpointView.axaml index d0fbf1f..1bcc3bd 100644 --- a/Needlework.Net.Desktop/Views/EndpointView.axaml +++ b/Needlework.Net/Views/EndpointView.axaml @@ -3,11 +3,11 @@ xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:materialIcons="clr-namespace:Material.Icons.Avalonia;assembly=Material.Icons.Avalonia" - xmlns:vm="using:Needlework.Net.Desktop.ViewModels" + xmlns:vm="using:Needlework.Net.ViewModels" xmlns:avalonEdit="https://github.com/avaloniaui/avaloniaedit" - xmlns:controls="using:Needlework.Net.Desktop.Controls" + xmlns:controls="using:Needlework.Net.Controls" mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450" - x:Class="Needlework.Net.Desktop.Views.EndpointView" + x:Class="Needlework.Net.Views.EndpointView" x:DataType="vm:EndpointViewModel">