Avalonia UI 11 Preview 5
* Menu fixes for macOS. * Delete nuget.config. * Nullable enabled. * Fixes in ViewModel class names. * ViewModel for MainControl as MainWindow state. * Preserve window state when swapping Fluent and Simple themes.
This commit is contained in:
@ -2,11 +2,11 @@
|
||||
xmlns:viewModels="clr-namespace:AvaloniaCoreRTDemo.Controls.ViewModels"
|
||||
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450" x:Class="AvaloniaCoreRTDemo.Controls.MainControl"
|
||||
x:CompileBindings="True"
|
||||
x:DataType="viewModels:MainViewModel">
|
||||
x:DataType="viewModels:MainControlViewModel">
|
||||
<Grid ColumnDefinitions="*,*" RowDefinitions="Auto,Auto,*" Margin="32">
|
||||
<TextBlock Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="2" TextAlignment="Center" Margin="0,6">Welcome to Avalonia UI + NativeAOT!</TextBlock>
|
||||
<Image Grid.Row="1" Grid.Column="0" Stretch="None" Source="{Binding DotNetImage}"/>
|
||||
<Image Grid.Row="1" Grid.Column="1" Stretch="None" Source="{Binding AvaloniaImage}"/>
|
||||
<TextBox Grid.Row="2" Grid.Column="0" Grid.ColumnSpan="2" Watermark="Type here" AcceptsReturn="True" TextWrapping="Wrap"/>
|
||||
<TextBox Grid.Row="2" Grid.Column="0" Grid.ColumnSpan="2" Watermark="Type here" AcceptsReturn="True" TextWrapping="Wrap" Text="{Binding Text}"/>
|
||||
</Grid>
|
||||
</UserControl>
|
||||
|
@ -9,13 +9,19 @@ namespace AvaloniaCoreRTDemo.Controls
|
||||
{
|
||||
public MainControl()
|
||||
{
|
||||
InitializeComponent();
|
||||
this.InitializeComponent();
|
||||
}
|
||||
|
||||
private void InitializeComponent()
|
||||
{
|
||||
AvaloniaXamlLoader.Load(this);
|
||||
this.DataContext = new MainViewModel();
|
||||
this.DataContext = new MainControlViewModel();
|
||||
}
|
||||
|
||||
public void Reload(IMainWindowState? model)
|
||||
{
|
||||
if(model is not null)
|
||||
this.DataContext = new MainControlViewModel(model);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
49
src/Controls/ViewModels/MainControlViewModel.cs
Normal file
49
src/Controls/ViewModels/MainControlViewModel.cs
Normal file
@ -0,0 +1,49 @@
|
||||
using System;
|
||||
using System.IO;
|
||||
|
||||
using Avalonia.Media.Imaging;
|
||||
using AvaloniaCoreRTDemo.Interfaces;
|
||||
using ReactiveUI;
|
||||
|
||||
namespace AvaloniaCoreRTDemo.Controls.ViewModels
|
||||
{
|
||||
internal sealed class MainControlViewModel : ReactiveObject, IMainWindowState
|
||||
{
|
||||
private readonly IBitmap _dotNetImage;
|
||||
private readonly IBitmap _avaloniaImage;
|
||||
|
||||
private Boolean _unloadable = false;
|
||||
|
||||
public IBitmap DotNetImage => this._dotNetImage;
|
||||
public IBitmap AvaloniaImage => this._avaloniaImage;
|
||||
public String? Text { get; set; }
|
||||
|
||||
public MainControlViewModel()
|
||||
{
|
||||
this._dotNetImage = Utilities.GetImageFromFile("dotnet.png");
|
||||
this._avaloniaImage = Utilities.GetImageFromFile("avalonia.png");
|
||||
}
|
||||
|
||||
public MainControlViewModel(IMainWindowState state)
|
||||
{
|
||||
this._avaloniaImage = state.AvaloniaImage;
|
||||
this._dotNetImage = state.DotNetImage;
|
||||
this.Text = state.Text;
|
||||
state.SetUnloadable();
|
||||
}
|
||||
|
||||
~MainControlViewModel()
|
||||
{
|
||||
if (!this._unloadable)
|
||||
{
|
||||
this._dotNetImage.Dispose();
|
||||
this._avaloniaImage.Dispose();
|
||||
}
|
||||
}
|
||||
|
||||
void IMainWindowState.SetUnloadable()
|
||||
{
|
||||
this._unloadable = true;
|
||||
}
|
||||
}
|
||||
}
|
@ -1,31 +0,0 @@
|
||||
using System;
|
||||
using System.IO;
|
||||
|
||||
using Avalonia.Media.Imaging;
|
||||
|
||||
using ReactiveUI;
|
||||
|
||||
namespace AvaloniaCoreRTDemo.Controls.ViewModels
|
||||
{
|
||||
internal sealed class MainViewModel : ReactiveObject
|
||||
{
|
||||
private readonly IBitmap _dotNetImage;
|
||||
private readonly IBitmap _avaloniaImage;
|
||||
|
||||
public IBitmap DotNetImage => this._dotNetImage;
|
||||
|
||||
public IBitmap AvaloniaImage => this._avaloniaImage;
|
||||
|
||||
public MainViewModel()
|
||||
{
|
||||
this._dotNetImage = Utilities.GetImageFromFile("dotnet.png");
|
||||
this._avaloniaImage = Utilities.GetImageFromFile("avalonia.png");
|
||||
}
|
||||
|
||||
~MainViewModel()
|
||||
{
|
||||
this._dotNetImage.Dispose();
|
||||
this._avaloniaImage.Dispose();
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user