diff --git a/src/AvaloniaCoreRTDemo.csproj b/src/AvaloniaCoreRTDemo.csproj
index 5a9bdfb..7de1ab9 100644
--- a/src/AvaloniaCoreRTDemo.csproj
+++ b/src/AvaloniaCoreRTDemo.csproj
@@ -2,23 +2,29 @@
- WinExe
+ WinExe
+ Exe
net7.0
- x64
Assets/app.ico
true
- true
enable
+ true
+ true
+ true
+
+
+
true
true
true
-
+ link
+
false
- false
+ false
true
true
@@ -37,6 +43,7 @@
PreserveNewest
PreserveNewest
+
@@ -49,7 +56,7 @@
-
+
diff --git a/src/Controls/MainControl.axaml.cs b/src/Controls/MainControl.axaml.cs
index c3cde67..52aa012 100644
--- a/src/Controls/MainControl.axaml.cs
+++ b/src/Controls/MainControl.axaml.cs
@@ -18,10 +18,9 @@ namespace AvaloniaCoreRTDemo.Controls
this.DataContext = new MainControlViewModel();
}
- public void Reload(IMainWindowState? model)
+ public void Reload(IMainWindowState model)
{
- if (model is not null)
- this.DataContext = new MainControlViewModel(model);
+ this.DataContext = new MainControlViewModel(model);
}
}
}
diff --git a/src/Interfaces/IMainWindow.cs b/src/Interfaces/IMainWindow.cs
index 36307e2..065ef7d 100644
--- a/src/Interfaces/IMainWindow.cs
+++ b/src/Interfaces/IMainWindow.cs
@@ -1,8 +1,15 @@
-namespace AvaloniaCoreRTDemo.Interfaces
+using Avalonia;
+using Avalonia.Controls;
+
+namespace AvaloniaCoreRTDemo.Interfaces
{
public interface IMainWindow
{
IThemeSwitch ThemeSwitch { get; }
IMainWindowState Model { get; }
+ PixelPoint Position { get; }
+ Size ClientSize { get; }
+ Size? FrameSize { get; }
+ WindowState State { get; }
}
}
diff --git a/src/Windows/AboutWindow.axaml.cs b/src/Windows/AboutWindow.axaml.cs
index acb023e..2676011 100644
--- a/src/Windows/AboutWindow.axaml.cs
+++ b/src/Windows/AboutWindow.axaml.cs
@@ -10,20 +10,23 @@ namespace AvaloniaCoreRTDemo.Windows
{
public sealed partial class AboutWindow : Window
{
+ private readonly Boolean _darkTheme;
+
public AboutWindow() : this(false) { }
public AboutWindow(Boolean darkTheme)
{
- this.InitializeComponent(darkTheme);
+ this._darkTheme = darkTheme;
+ this.InitializeComponent();
#if DEBUG
this.AttachDevTools();
#endif
}
- private void InitializeComponent(Boolean darkTheme = default)
+ private void InitializeComponent()
{
AvaloniaXamlLoader.Load(this);
- this.DataContext = new AboutViewModel(darkTheme);
+ this.DataContext = new AboutViewModel(this._darkTheme);
}
}
}
diff --git a/src/Windows/MainWindow.axaml b/src/Windows/MainWindow.axaml
index 4db5a61..3977e9b 100644
--- a/src/Windows/MainWindow.axaml
+++ b/src/Windows/MainWindow.axaml
@@ -7,7 +7,7 @@
x:DataType="viewModels1:ApplicationModelBase">
-
+
diff --git a/src/Windows/MainWindow.axaml.cs b/src/Windows/MainWindow.axaml.cs
index 1851b1a..3e1bd4a 100644
--- a/src/Windows/MainWindow.axaml.cs
+++ b/src/Windows/MainWindow.axaml.cs
@@ -12,6 +12,8 @@ namespace AvaloniaCoreRTDemo.Windows
{
private readonly Application? _app = App.Current;
+ private MainControl MainControl => this.GetControl("MainControl");
+
public MainWindow() : this(default) { }
public MainWindow(IMainWindow? window)
{
@@ -21,14 +23,25 @@ namespace AvaloniaCoreRTDemo.Windows
#endif
}
- IThemeSwitch IMainWindow.ThemeSwitch => (this._app as IThemeSwitch)!;
- IMainWindowState IMainWindow.Model => (this.GetControl("mainControl")!.DataContext as IMainWindowState)!;
+ IThemeSwitch IMainWindow.ThemeSwitch => (IThemeSwitch)this._app!;
+ IMainWindowState IMainWindow.Model => (IMainWindowState)this.MainControl.DataContext!;
+ PixelPoint IMainWindow.Position => this.Position;
+ Size IMainWindow.ClientSize => this.ClientSize;
+ Size? IMainWindow.FrameSize => this.FrameSize;
+ WindowState IMainWindow.State => this.WindowState;
private void InitializeComponent(IMainWindow? window)
{
AvaloniaXamlLoader.Load(this);
this.DataContext = new MainViewModel(this);
- this.GetControl("mainControl").Reload(window?.Model);
+ if(window is not null)
+ {
+ this.MainControl.Reload(window.Model);
+ this.WindowState = window.State;
+ this.Position = window.Position;
+ this.FrameSize = window.FrameSize;
+ this.ClientSize = window.ClientSize;
+ }
}
}
}
diff --git a/test.cmd b/test.cmd
index c9bf3b9..90ebc8d 100644
--- a/test.cmd
+++ b/test.cmd
@@ -1,2 +1,2 @@
del src\packages.lock.json
-dotnet publish -r win-x64 -c release /p:RestoreLockedMode=true /p:TrimLink=true --self-contained
\ No newline at end of file
+dotnet publish -r win-x64 -c Release /p:RestoreLockedMode=true
\ No newline at end of file
diff --git a/test.command b/test.command
index 674b2ba..a81ffe8 100755
--- a/test.command
+++ b/test.command
@@ -4,7 +4,7 @@ if [ -d "$dir" ]; then
cd "$dir"
fi
rm -f src/packages.lock.json
-dotnet publish -r osx-x64 -c release /p:RestoreLockedMode=true -t:BundleApp /p:TrimLink=true --self-contained
+dotnet publish -r osx-x64 -c Release /p:RestoreLockedMode=true -t:BundleApp
rm -rf src/bin/x64/Release/net7.0/osx-x64/publish/Assets/
rm -rf src/bin/x64/Release/net7.0/osx-x64/publish/AvaloniaCoreRTDemo.app/Contents/MacOS/Assets/
rm src/bin/x64/Release/net7.0/osx-x64/publish/AvaloniaCoreRTDemo.app/Contents/MacOS/AvaloniaCoreRTDemo.dwarf
\ No newline at end of file
diff --git a/test.sh b/test.sh
index cefc25d..3fb1357 100644
--- a/test.sh
+++ b/test.sh
@@ -1,6 +1,6 @@
#!/bin/bash
rm -f src/packages.lock.json
-dotnet publish -r linux-x64 -c release /p:RestoreLockedMode=true /p:TrimLink=true --self-contained
+dotnet publish -r linux-x64 -c Release /p:RestoreLockedMode=true
cd src/bin/x64/Release/net7.0/linux-x64/publish
cp AvaloniaCoreRTDemo AvaloniaCoreRTDemo.bin
strip AvaloniaCoreRTDemo.bin