Skip to content

Commit 81b76ad

Browse files
committed
Make sample project AOT compatible
1 parent 7ca89e7 commit 81b76ad

File tree

6 files changed

+28
-25
lines changed

6 files changed

+28
-25
lines changed

Directory.Build.props

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,14 @@
55
<Nullable>enable</Nullable>
66
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
77
<WarningsAsErrors>nullable</WarningsAsErrors>
8-
<TargetFramework>net6.0</TargetFramework>
9-
<LangVersion>9</LangVersion>
8+
<LangVersion>11</LangVersion>
109
<!-- https://github.com/dotnet/msbuild/issues/2661 -->
1110
<AddSyntheticProjectReferencesForSolutionDependencies>false</AddSyntheticProjectReferencesForSolutionDependencies>
1211
<MSBuildEnableWorkloadResolver>false</MSBuildEnableWorkloadResolver>
12+
<AvaloniaUseCompiledBindingsByDefault>true</AvaloniaUseCompiledBindingsByDefault>
1313
</PropertyGroup>
1414
<PropertyGroup>
1515
<AvaloniaVersion>11.0.0</AvaloniaVersion>
16+
<AvaloniaSamplesVersion>11.1.3</AvaloniaSamplesVersion>
1617
</PropertyGroup>
1718
</Project>

global.json

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
{
22
"sdk": {
3-
"version": "7.0.101",
4-
"rollForward": "latestFeature"
3+
"version": "8.0.0",
4+
"rollForward": "latestFeature",
5+
"allowPrerelease": false
56
}
6-
}
7+
}

samples/TreeDataGridDemo/MainWindow.axaml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@
66
xmlns:vm="using:TreeDataGridDemo.ViewModels"
77
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
88
x:Class="TreeDataGridDemo.MainWindow"
9-
Title="TreeDataGridDemo">
9+
Title="TreeDataGridDemo"
10+
x:DataType="vm:MainWindowViewModel">
1011
<TabControl Name="tabs">
1112
<TabItem Header="Countries">
1213
<DockPanel>
@@ -125,7 +126,7 @@
125126
<TextBlock Classes="realized-count" DockPanel.Dock="Bottom"/>
126127
<TreeDataGrid Name="wikipedia" Source="{Binding Wikipedia.Source}">
127128
<TreeDataGrid.Resources>
128-
<DataTemplate x:Key="WikipediaImageCell">
129+
<DataTemplate x:Key="WikipediaImageCell" x:DataType="m:OnThisDayArticle">
129130
<Image Source="{Binding Image}"/>
130131
</DataTemplate>
131132
</TreeDataGrid.Resources>

samples/TreeDataGridDemo/MainWindow.axaml.cs

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ public partial class MainWindow : Window
2020
public MainWindow()
2121
{
2222
InitializeComponent();
23-
this.AttachDevTools();
2423
DataContext = new MainWindowViewModel();
2524

2625
_tabs = this.FindControl<TabControl>("tabs");
@@ -75,11 +74,6 @@ public void AddCountryClick(object sender, RoutedEventArgs e)
7574
countries.TryGetRow(index)?.Focus();
7675
}
7776

78-
private void InitializeComponent()
79-
{
80-
AvaloniaXamlLoader.Load(this);
81-
}
82-
8377
private void MainWindow_Activated(object? sender, EventArgs e)
8478
{
8579
Program.Stopwatch!.Stop();

samples/TreeDataGridDemo/TreeDataGridDemo.csproj

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
<Project Sdk="Microsoft.NET.Sdk">
22
<PropertyGroup>
3-
<TargetFramework>net6.0</TargetFramework>
3+
<TargetFramework>net8.0</TargetFramework>
44
<IsPackable>False</IsPackable>
55
<OutputType>WinExe</OutputType>
6+
<PublishAot Condition="'$(Configuration)' == 'Release'">true</PublishAot>
67
</PropertyGroup>
78
<ItemGroup>
89
<AvaloniaResource Include="Assets\**" />
@@ -12,12 +13,12 @@
1213
<None Remove="Assets\folder.png" />
1314
</ItemGroup>
1415
<ItemGroup>
15-
<PackageReference Include="Avalonia" Version="$(AvaloniaVersion)" />
16-
<PackageReference Include="Avalonia.Desktop" Version="$(AvaloniaVersion)" />
17-
<PackageReference Include="Avalonia.Diagnostics" Version="$(AvaloniaVersion)" />
18-
<PackageReference Include="Avalonia.Themes.Fluent" Version="$(AvaloniaVersion)" />
19-
<PackageReference Include="Avalonia.Fonts.Inter" Version="$(AvaloniaVersion)" />
20-
<PackageReference Include="Avalonia.ReactiveUI" Version="$(AvaloniaVersion)" />
16+
<PackageReference Include="Avalonia" Version="$(AvaloniaSamplesVersion)" />
17+
<PackageReference Include="Avalonia.Desktop" Version="$(AvaloniaSamplesVersion)" />
18+
<PackageReference Include="Avalonia.Diagnostics" Version="$(AvaloniaSamplesVersion)" Condition="'$(Configuration)' != 'Release'" />
19+
<PackageReference Include="Avalonia.Themes.Fluent" Version="$(AvaloniaSamplesVersion)" />
20+
<PackageReference Include="Avalonia.Fonts.Inter" Version="$(AvaloniaSamplesVersion)" />
21+
<PackageReference Include="Avalonia.ReactiveUI" Version="$(AvaloniaSamplesVersion)" />
2122
<PackageReference Include="Bogus" Version="34.0.2" />
2223
</ItemGroup>
2324
<ItemGroup>

samples/TreeDataGridDemo/ViewModels/WikipediaPageViewModel.cs

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
using System.Linq;
33
using System.Net.Http;
44
using System.Text.Json;
5+
using System.Text.Json.Serialization;
56
using System.Threading.Tasks;
67
using Avalonia.Collections;
78
using Avalonia.Controls;
@@ -11,7 +12,7 @@
1112

1213
namespace TreeDataGridDemo.ViewModels
1314
{
14-
internal class WikipediaPageViewModel
15+
internal partial class WikipediaPageViewModel
1516
{
1617
private readonly AvaloniaList<OnThisDayArticle> _data = new();
1718

@@ -47,15 +48,19 @@ private async Task LoadContent()
4748
var m = DateTimeOffset.Now.Month;
4849
var uri = $"https://api.wikimedia.org/feed/v1/wikipedia/en/onthisday/all/{m}/{d}";
4950
var s = await client.GetStringAsync(uri);
50-
var data = JsonSerializer.Deserialize<OnThisDay>(s, new JsonSerializerOptions
51-
{
52-
PropertyNameCaseInsensitive = true,
53-
});
51+
var data = (OnThisDay)JsonSerializer.Deserialize(s, typeof(OnThisDay), SerializationContext.Default)!;
5452

5553
if (data?.Selected is not null)
5654
_data.AddRange(data.Selected.SelectMany(x => x.Pages!));
5755
}
5856
catch { }
5957
}
58+
59+
[JsonSourceGenerationOptions(PropertyNameCaseInsensitive = true)]
60+
[JsonSerializable(typeof(OnThisDay))]
61+
internal partial class SerializationContext : JsonSerializerContext
62+
{
63+
64+
}
6065
}
6166
}

0 commit comments

Comments
 (0)