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