diff --git a/src/RoyalApps.Community.Avalonia.Common/RoyalApps.Community.Avalonia.Common.csproj b/src/RoyalApps.Community.Avalonia.Common/RoyalApps.Community.Avalonia.Common.csproj
index f58a049..74d155a 100644
--- a/src/RoyalApps.Community.Avalonia.Common/RoyalApps.Community.Avalonia.Common.csproj
+++ b/src/RoyalApps.Community.Avalonia.Common/RoyalApps.Community.Avalonia.Common.csproj
@@ -1,14 +1,14 @@
- net7.0
+ net8.0
latest
enable
RoyalApps.Community.Avalonia.Common
-
+
diff --git a/src/RoyalApps.Community.Avalonia.InteropDemo/InteropDemo.WinForms/InteropDemo.WinForms.csproj b/src/RoyalApps.Community.Avalonia.InteropDemo/InteropDemo.WinForms/InteropDemo.WinForms.csproj
index e175340..3d5a5ed 100644
--- a/src/RoyalApps.Community.Avalonia.InteropDemo/InteropDemo.WinForms/InteropDemo.WinForms.csproj
+++ b/src/RoyalApps.Community.Avalonia.InteropDemo/InteropDemo.WinForms/InteropDemo.WinForms.csproj
@@ -1,8 +1,8 @@
- net7.0-windows
- win10-x64;win10-arm64
+ net8.0-windows
+ win-x64;win-arm64
x64;ARM64
Debug;Release
true
diff --git a/src/RoyalApps.Community.Avalonia.InteropDemo/InteropDemo/App.axaml b/src/RoyalApps.Community.Avalonia.InteropDemo/InteropDemo/App.axaml
index dce1c1a..09d3a77 100644
--- a/src/RoyalApps.Community.Avalonia.InteropDemo/InteropDemo/App.axaml
+++ b/src/RoyalApps.Community.Avalonia.InteropDemo/InteropDemo/App.axaml
@@ -3,5 +3,10 @@
x:Class="InteropDemo.App">
+
+
+
diff --git a/src/RoyalApps.Community.Avalonia.InteropDemo/InteropDemo/App.axaml.cs b/src/RoyalApps.Community.Avalonia.InteropDemo/InteropDemo/App.axaml.cs
index 0dc5cc5..f4b46a3 100644
--- a/src/RoyalApps.Community.Avalonia.InteropDemo/InteropDemo/App.axaml.cs
+++ b/src/RoyalApps.Community.Avalonia.InteropDemo/InteropDemo/App.axaml.cs
@@ -8,7 +8,7 @@ namespace InteropDemo;
public class App : Application
{
public static MainViewModel MainViewModel;
-
+
static App()
{
MainViewModel = new MainViewModel();
diff --git a/src/RoyalApps.Community.Avalonia.InteropDemo/InteropDemo/InteropDemo.csproj b/src/RoyalApps.Community.Avalonia.InteropDemo/InteropDemo/InteropDemo.csproj
index ad9820c..912af9f 100644
--- a/src/RoyalApps.Community.Avalonia.InteropDemo/InteropDemo/InteropDemo.csproj
+++ b/src/RoyalApps.Community.Avalonia.InteropDemo/InteropDemo/InteropDemo.csproj
@@ -2,8 +2,8 @@
WinExe
- net7.0-windows
- win10-x64;win10-arm64
+ net8.0-windows
+ win-x64;win-arm64
x64;ARM64
Debug;Release
true
@@ -25,14 +25,14 @@
-
-
-
+
+
+
-
-
-
+
+
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
diff --git a/src/RoyalApps.Community.Avalonia.InteropDemo/InteropDemo/MainView.axaml b/src/RoyalApps.Community.Avalonia.InteropDemo/InteropDemo/MainView.axaml
index aed6688..d11f1de 100644
--- a/src/RoyalApps.Community.Avalonia.InteropDemo/InteropDemo/MainView.axaml
+++ b/src/RoyalApps.Community.Avalonia.InteropDemo/InteropDemo/MainView.axaml
@@ -7,16 +7,21 @@
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
x:Class="InteropDemo.MainView"
x:CompileBindings="True"
- x:DataType="viewModels:MainViewModel"
- >
+ x:DataType="viewModels:MainViewModel">
-
-
+
+
+
+
diff --git a/src/RoyalApps.Community.Avalonia.InteropDemo/InteropDemo/MainWindow.axaml b/src/RoyalApps.Community.Avalonia.InteropDemo/InteropDemo/MainWindow.axaml
index 899c276..05e531d 100644
--- a/src/RoyalApps.Community.Avalonia.InteropDemo/InteropDemo/MainWindow.axaml
+++ b/src/RoyalApps.Community.Avalonia.InteropDemo/InteropDemo/MainWindow.axaml
@@ -3,27 +3,33 @@
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:interopDemo="clr-namespace:InteropDemo"
+ xmlns:windows="clr-namespace:RoyalApps.Community.Avalonia.Windows;assembly=RoyalApps.Community.Avalonia.Windows"
+ xmlns:viewModels="clr-namespace:InteropDemo.ViewModels"
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
UseLayoutRounding="True" RenderOptions.BitmapInterpolationMode="HighQuality"
- x:Class="InteropDemo.MainWindow"
- TransparencyLevelHint="AcrylicBlur"
Title="Interop Demo"
- ExtendClientAreaToDecorationsHint="False"
- ExtendClientAreaChromeHints="PreferSystemChrome">
-
-
-
-
-
-
-
-
-
-
-
-
+ TransparencyLevelHint="{Binding Transparency}"
+ ExtendClientAreaToDecorationsHint="True"
+ ExtendClientAreaChromeHints="PreferSystemChrome"
+ x:Class="InteropDemo.MainWindow"
+ x:DataType="viewModels:MainViewModel">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/RoyalApps.Community.Avalonia.InteropDemo/InteropDemo/MainWindow.axaml.cs b/src/RoyalApps.Community.Avalonia.InteropDemo/InteropDemo/MainWindow.axaml.cs
index 5e1ecfa..83b87c0 100644
--- a/src/RoyalApps.Community.Avalonia.InteropDemo/InteropDemo/MainWindow.axaml.cs
+++ b/src/RoyalApps.Community.Avalonia.InteropDemo/InteropDemo/MainWindow.axaml.cs
@@ -1,4 +1,5 @@
using Avalonia.Controls;
+using Avalonia.Markup.Xaml;
namespace InteropDemo;
@@ -6,6 +7,6 @@ public partial class MainWindow : Window
{
public MainWindow()
{
- InitializeComponent();
+ AvaloniaXamlLoader.Load(this);
}
}
\ No newline at end of file
diff --git a/src/RoyalApps.Community.Avalonia.InteropDemo/InteropDemo/Program.cs b/src/RoyalApps.Community.Avalonia.InteropDemo/InteropDemo/Program.cs
index 6e6d611..6217493 100644
--- a/src/RoyalApps.Community.Avalonia.InteropDemo/InteropDemo/Program.cs
+++ b/src/RoyalApps.Community.Avalonia.InteropDemo/InteropDemo/Program.cs
@@ -18,7 +18,8 @@ public static AppBuilder BuildAvaloniaApp()
.UsePlatformDetect()
.With(new Win32PlatformOptions
{
- CompositionMode = new [] {Win32CompositionMode.WinUIComposition, Win32CompositionMode.LowLatencyDxgiSwapChain, Win32CompositionMode.RedirectionSurface},
+ OverlayPopups = true,
+ //CompositionMode = new [] {Win32CompositionMode.RedirectionSurface},
})
.LogToTrace();
}
\ No newline at end of file
diff --git a/src/RoyalApps.Community.Avalonia.InteropDemo/InteropDemo/ViewModels/MainViewModel.cs b/src/RoyalApps.Community.Avalonia.InteropDemo/InteropDemo/ViewModels/MainViewModel.cs
index 16ced9d..d3bdd85 100644
--- a/src/RoyalApps.Community.Avalonia.InteropDemo/InteropDemo/ViewModels/MainViewModel.cs
+++ b/src/RoyalApps.Community.Avalonia.InteropDemo/InteropDemo/ViewModels/MainViewModel.cs
@@ -1,4 +1,9 @@
-using System.Collections.ObjectModel;
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+using System.Linq;
+using Avalonia;
+using Avalonia.Controls;
+using Avalonia.Styling;
using CommunityToolkit.Mvvm.ComponentModel;
using CommunityToolkit.Mvvm.Input;
@@ -8,18 +13,21 @@ public partial class MainViewModel : ViewModelBase
{
private int _counter = 1;
[ObservableProperty] private TabViewModel? _selectedTab;
+ [ObservableProperty] private IReadOnlyList _transparency = [WindowTransparencyLevel.Mica, WindowTransparencyLevel.Transparent
+ ];
public ObservableCollection Tabs { get; set; } = new();
- [RelayCommand] public void Add() => AddTab(new TestViewModel());
- [RelayCommand] public void Remove() => RemoveTab(SelectedTab);
- private void AddTab(TabViewModel tab)
+ [RelayCommand]
+ private void AddTab(TabViewModel? tab)
{
+ tab ??= new TestViewModel();
tab.Caption += $" {_counter++}";
Tabs.Add(tab);
SelectedTab = tab;
}
- public void RemoveTab(TabViewModel? tab)
+ [RelayCommand]
+ private void RemoveTab(TabViewModel? tab)
{
if (tab is null)
return;
@@ -27,4 +35,23 @@ public void RemoveTab(TabViewModel? tab)
tab.RaiseTabClosing();
Tabs.Remove(tab);
}
+
+ [RelayCommand]
+ private void ToggleTheme()
+ {
+ if (Application.Current is null)
+ return;
+
+ Application.Current.RequestedThemeVariant = Application.Current.ActualThemeVariant == ThemeVariant.Light
+ ? ThemeVariant.Dark
+ : ThemeVariant.Light;
+ }
+
+ [RelayCommand]
+ private void ToggleMica()
+ {
+ Transparency = Transparency.Contains(WindowTransparencyLevel.Mica)
+ ? []
+ : new[] { WindowTransparencyLevel.Mica };
+ }
}
\ No newline at end of file
diff --git a/src/RoyalApps.Community.Avalonia.InteropDemo/InteropDemo/ViewModels/TabViewModel.cs b/src/RoyalApps.Community.Avalonia.InteropDemo/InteropDemo/ViewModels/TabViewModel.cs
index aab5cff..8e0f8b1 100644
--- a/src/RoyalApps.Community.Avalonia.InteropDemo/InteropDemo/ViewModels/TabViewModel.cs
+++ b/src/RoyalApps.Community.Avalonia.InteropDemo/InteropDemo/ViewModels/TabViewModel.cs
@@ -11,7 +11,7 @@ public partial class TabViewModel : ViewModelBase, IDisposeWinFormsControl
public event EventHandler? DisposeWinFormsControl;
- [RelayCommand] public void Close() => App.MainViewModel.RemoveTab(this);
+ [RelayCommand] public void Close() => App.MainViewModel.RemoveTabCommand.Execute(this);
public void RaiseTabClosing()
{
diff --git a/src/RoyalApps.Community.Avalonia.Windows/RoyalApps.Community.Avalonia.Windows.csproj b/src/RoyalApps.Community.Avalonia.Windows/RoyalApps.Community.Avalonia.Windows.csproj
index dbe16d9..3f83fa2 100644
--- a/src/RoyalApps.Community.Avalonia.Windows/RoyalApps.Community.Avalonia.Windows.csproj
+++ b/src/RoyalApps.Community.Avalonia.Windows/RoyalApps.Community.Avalonia.Windows.csproj
@@ -12,12 +12,12 @@
RoyalApps_1024.png
MIT
RoyalApps.Community.Avalonia.Windows
- 1.0.3
+ 1.1.0-beta1
- net7.0-windows
- win10-x64;win10-arm64
+ net8.0-windows
+ win-x64;win-arm64
Debug;Release
x64;ARM64
true
@@ -29,8 +29,8 @@
-
-
+
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive