From 19bd4c8c79c3d089c7b1de0f46564460200974e5 Mon Sep 17 00:00:00 2001 From: Zhang Dian <54255897+zdpcdt@users.noreply.github.com> Date: Wed, 19 Jul 2023 23:03:17 +0800 Subject: [PATCH] fix: support WASM. --- demo/Ursa.Demo.Android/App.axaml.cs | 23 ----------- demo/Ursa.Demo.Browser/App.axaml | 9 ----- demo/Ursa.Demo.Browser/App.axaml.cs | 23 ----------- demo/Ursa.Demo.Desktop/App.axaml | 9 ----- .../Ursa.Demo.Desktop.csproj | 9 +---- demo/Ursa.Demo.iOS/AppDelegate.cs | 5 +-- .../App.axaml | 2 +- .../App.axaml.cs | 15 ++++--- demo/Ursa.Demo/Ursa.Demo.csproj | 7 ++++ .../Ursa.Demo/ViewModels/MainViewViewModel.cs | 39 +++++++++++++++++++ .../ViewModels/MainWindowViewModel.cs | 38 +----------------- demo/Ursa.Demo/Views/MainView.axaml | 4 +- demo/Ursa.Demo/Views/MainWindow.axaml | 5 ++- 13 files changed, 67 insertions(+), 121 deletions(-) delete mode 100644 demo/Ursa.Demo.Android/App.axaml.cs delete mode 100644 demo/Ursa.Demo.Browser/App.axaml delete mode 100644 demo/Ursa.Demo.Browser/App.axaml.cs delete mode 100644 demo/Ursa.Demo.Desktop/App.axaml rename demo/{Ursa.Demo.Android => Ursa.Demo}/App.axaml (90%) rename demo/{Ursa.Demo.Desktop => Ursa.Demo}/App.axaml.cs (59%) create mode 100644 demo/Ursa.Demo/ViewModels/MainViewViewModel.cs diff --git a/demo/Ursa.Demo.Android/App.axaml.cs b/demo/Ursa.Demo.Android/App.axaml.cs deleted file mode 100644 index 61508ce..0000000 --- a/demo/Ursa.Demo.Android/App.axaml.cs +++ /dev/null @@ -1,23 +0,0 @@ -using Avalonia; -using Avalonia.Controls.ApplicationLifetimes; -using Avalonia.Markup.Xaml; -using Ursa.Demo.Views; - -namespace Ursa.Demo.Android; - -public partial class App : Application -{ - public override void Initialize() - { - AvaloniaXamlLoader.Load(this); - } - - public override void OnFrameworkInitializationCompleted() - { - if (ApplicationLifetime is ISingleViewApplicationLifetime single) - { - single.MainView = new MainView(); - } - base.OnFrameworkInitializationCompleted(); - } -} \ No newline at end of file diff --git a/demo/Ursa.Demo.Browser/App.axaml b/demo/Ursa.Demo.Browser/App.axaml deleted file mode 100644 index 94b6bbf..0000000 --- a/demo/Ursa.Demo.Browser/App.axaml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/demo/Ursa.Demo.Browser/App.axaml.cs b/demo/Ursa.Demo.Browser/App.axaml.cs deleted file mode 100644 index 9c680b0..0000000 --- a/demo/Ursa.Demo.Browser/App.axaml.cs +++ /dev/null @@ -1,23 +0,0 @@ -using Avalonia; -using Avalonia.Controls.ApplicationLifetimes; -using Avalonia.Markup.Xaml; -using Ursa.Demo.Views; - -namespace Ursa.Demo.Browser; - -public partial class App : Application -{ - public override void Initialize() - { - AvaloniaXamlLoader.Load(this); - } - - public override void OnFrameworkInitializationCompleted() - { - if (ApplicationLifetime is ISingleViewApplicationLifetime single) - { - single.MainView = new MainView(); - } - base.OnFrameworkInitializationCompleted(); - } -} \ No newline at end of file diff --git a/demo/Ursa.Demo.Desktop/App.axaml b/demo/Ursa.Demo.Desktop/App.axaml deleted file mode 100644 index 5873771..0000000 --- a/demo/Ursa.Demo.Desktop/App.axaml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - diff --git a/demo/Ursa.Demo.Desktop/Ursa.Demo.Desktop.csproj b/demo/Ursa.Demo.Desktop/Ursa.Demo.Desktop.csproj index 1ff2d0a..3d3f388 100644 --- a/demo/Ursa.Demo.Desktop/Ursa.Demo.Desktop.csproj +++ b/demo/Ursa.Demo.Desktop/Ursa.Demo.Desktop.csproj @@ -3,7 +3,7 @@ WinExe - net6.0 + net7.0 enable true @@ -21,11 +21,4 @@ - - - - App.axaml - Code - - diff --git a/demo/Ursa.Demo.iOS/AppDelegate.cs b/demo/Ursa.Demo.iOS/AppDelegate.cs index 0eb6c00..a565165 100644 --- a/demo/Ursa.Demo.iOS/AppDelegate.cs +++ b/demo/Ursa.Demo.iOS/AppDelegate.cs @@ -4,7 +4,6 @@ using Avalonia; using Avalonia.Controls; using Avalonia.iOS; using Avalonia.Media; -using Avalonia.ReactiveUI; namespace Ursa.Demo.iOS; @@ -16,8 +15,6 @@ public partial class AppDelegate : AvaloniaAppDelegate { protected override AppBuilder CustomizeAppBuilder(AppBuilder builder) { - return base.CustomizeAppBuilder(builder) - .WithInterFont() - .UseReactiveUI(); + return base.CustomizeAppBuilder(builder); } } \ No newline at end of file diff --git a/demo/Ursa.Demo.Android/App.axaml b/demo/Ursa.Demo/App.axaml similarity index 90% rename from demo/Ursa.Demo.Android/App.axaml rename to demo/Ursa.Demo/App.axaml index 2b8c798..8326f56 100644 --- a/demo/Ursa.Demo.Android/App.axaml +++ b/demo/Ursa.Demo/App.axaml @@ -1,5 +1,5 @@ diff --git a/demo/Ursa.Demo.Desktop/App.axaml.cs b/demo/Ursa.Demo/App.axaml.cs similarity index 59% rename from demo/Ursa.Demo.Desktop/App.axaml.cs rename to demo/Ursa.Demo/App.axaml.cs index 66b6de0..169a116 100644 --- a/demo/Ursa.Demo.Desktop/App.axaml.cs +++ b/demo/Ursa.Demo/App.axaml.cs @@ -4,7 +4,7 @@ using Avalonia.Markup.Xaml; using Ursa.Demo.ViewModels; using Ursa.Demo.Views; -namespace Ursa.Demo.Desktop; +namespace Ursa.Demo; public partial class App : Application { @@ -17,11 +17,16 @@ public partial class App : Application { if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop) { - // Line below is needed to remove Avalonia data validation. - // Without this line you will get duplicate validations from both Avalonia and CT - desktop.MainWindow = new MainWindow + desktop.MainWindow = new MainWindow() { - DataContext = new MainWindowViewModel(), + DataContext = new MainViewViewModel(), + }; + } + else if (ApplicationLifetime is ISingleViewApplicationLifetime singleView) + { + singleView.MainView = new MainView() + { + DataContext = new MainViewViewModel(), }; } diff --git a/demo/Ursa.Demo/Ursa.Demo.csproj b/demo/Ursa.Demo/Ursa.Demo.csproj index 4f0188d..5f47fa7 100644 --- a/demo/Ursa.Demo/Ursa.Demo.csproj +++ b/demo/Ursa.Demo/Ursa.Demo.csproj @@ -26,4 +26,11 @@ + + + + App.axaml + Code + + diff --git a/demo/Ursa.Demo/ViewModels/MainViewViewModel.cs b/demo/Ursa.Demo/ViewModels/MainViewViewModel.cs new file mode 100644 index 0000000..6641f1f --- /dev/null +++ b/demo/Ursa.Demo/ViewModels/MainViewViewModel.cs @@ -0,0 +1,39 @@ +using CommunityToolkit.Mvvm.Messaging; + +namespace Ursa.Demo.ViewModels; + +public class MainViewViewModel : ViewModelBase +{ + public MenuViewModel Menus { get; set; } = new MenuViewModel(); + + private object? _content; + + public object? Content + { + get => _content; + set => SetProperty(ref _content, value); + } + + public MainViewViewModel() + { + WeakReferenceMessenger.Default.Register(this, OnNavigation); + } + + + private void OnNavigation(MainViewViewModel vm, string s) + { + Content = s switch + { + MenuKeys.MenuKeyBadge => new BadgeDemoViewModel(), + MenuKeys.MenuKeyBanner => new BannerDemoViewModel(), + MenuKeys.MenuKeyButtonGroup => new ButtonGroupDemoViewModel(), + MenuKeys.MenuKeyDivider => new DividerDemoViewModel(), + MenuKeys.MenuKeyIpBox => new IPv4BoxDemoViewModel(), + MenuKeys.MenuKeyLoading => new LoadingDemoViewModel(), + MenuKeys.MenuKeyNavigation => new NavigationMenuDemoViewModel(), + MenuKeys.MenuKeyPagination => new PaginationDemoViewModel(), + MenuKeys.MenuKeyTagInput => new TagInputDemoViewModel(), + MenuKeys.MenuKeyTimeline => new TimelineDemoViewModel(), + }; + } +} \ No newline at end of file diff --git a/demo/Ursa.Demo/ViewModels/MainWindowViewModel.cs b/demo/Ursa.Demo/ViewModels/MainWindowViewModel.cs index 7fdbd75..522e47b 100644 --- a/demo/Ursa.Demo/ViewModels/MainWindowViewModel.cs +++ b/demo/Ursa.Demo/ViewModels/MainWindowViewModel.cs @@ -1,40 +1,6 @@ - -using CommunityToolkit.Mvvm.Messaging; - -namespace Ursa.Demo.ViewModels; +namespace Ursa.Demo.ViewModels; public class MainWindowViewModel : ViewModelBase { - public MenuViewModel Menus { get; set; } = new MenuViewModel(); - - private object? _content; - public object? Content - { - get => _content; - set => SetProperty(ref _content, value); - } - - public MainWindowViewModel() - { - WeakReferenceMessenger.Default.Register(this, OnNavigation); - } - - - - private void OnNavigation(MainWindowViewModel vm, string s) - { - Content = s switch - { - MenuKeys.MenuKeyBadge => new BadgeDemoViewModel(), - MenuKeys.MenuKeyBanner => new BannerDemoViewModel(), - MenuKeys.MenuKeyButtonGroup => new ButtonGroupDemoViewModel(), - MenuKeys.MenuKeyDivider => new DividerDemoViewModel(), - MenuKeys.MenuKeyIpBox => new IPv4BoxDemoViewModel(), - MenuKeys.MenuKeyLoading => new LoadingDemoViewModel(), - MenuKeys.MenuKeyNavigation => new NavigationMenuDemoViewModel(), - MenuKeys.MenuKeyPagination => new PaginationDemoViewModel(), - MenuKeys.MenuKeyTagInput => new TagInputDemoViewModel(), - MenuKeys.MenuKeyTimeline => new TimelineDemoViewModel(), - }; - } + public MainViewViewModel MainViewViewModel { get; set; } = new MainViewViewModel(); } \ No newline at end of file diff --git a/demo/Ursa.Demo/Views/MainView.axaml b/demo/Ursa.Demo/Views/MainView.axaml index 1183ce5..710026c 100644 --- a/demo/Ursa.Demo/Views/MainView.axaml +++ b/demo/Ursa.Demo/Views/MainView.axaml @@ -10,11 +10,11 @@ d:DesignHeight="450" d:DesignWidth="800" x:CompileBindings="True" - x:DataType="vm:MainWindowViewModel" + x:DataType="vm:MainViewViewModel" mc:Ignorable="d"> - + diff --git a/demo/Ursa.Demo/Views/MainWindow.axaml b/demo/Ursa.Demo/Views/MainWindow.axaml index 24c7b85..054e043 100644 --- a/demo/Ursa.Demo/Views/MainWindow.axaml +++ b/demo/Ursa.Demo/Views/MainWindow.axaml @@ -5,10 +5,13 @@ xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:views="clr-namespace:Ursa.Demo.Views" + xmlns:viewModels="clr-namespace:Ursa.Demo.ViewModels" Title="Ursa.Demo" d:DesignHeight="450" d:DesignWidth="800" + x:CompileBindings="True" + x:DataType="viewModels:MainWindowViewModel" Icon="/Assets/Ursa.ico" mc:Ignorable="d"> - + \ No newline at end of file