Avalonia 0.8 Release

Published Author Steven Kirk Category Release

We are pleased to announce that Avalonia 0.8 has been released.

The easiest way to get started with Avalonia is to install our Visual Studio plugin and use the templates we provide there or use our .NET core templates. Check out our samples for some examples of how to get started writing an application.

There have been many bug fixes, performance optimizations and features added. Here is a list of the biggest new features:

X11 Backend

Previously on X11 platforms we relied on a locally-installed GTK to handle our windowing. This caused a number of problems and we used a very small amount of GTK. #2011 implemented a native X11 backend and reduced our dependency on GTK's windowing system. File dialogs for now are still reliant on GTK but the backend is architectured to be able to easily replace the remaining dependencies if the need arises

AvaloniaResource

We now have a new resource scheme which allows for more usable URLs for resources. To use the new resource scheme you should replace EmbeddedResource in your csproj with AvaloniaResource , for example:

<AvaloniaResource Include="**\*.xaml"> <SubType>Designer</SubType> </AvaloniaResource> <AvaloniaResource Include="Assets\*"/>

In addition, an x:Class attribute should be added to your XAML files with the full name of the associated C# class.

<UserControl xmlns="https://github.com/avaloniaui" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" x:Class="MyApplication.MyUserControl">

Now you can use relative paths to refer to resources from XAML:

<Window xmlns="https://github.com/avaloniaui" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" x:Class="MyApplication.MyWindow" Icon="/Assets/avalonia-logo.ico">

For more information, see our updated project templates:

Dark Theme

#2078 added everyone's favorite feature, a dark theme. Welcome to 2019!

Refactored Platform Options

#2368 refactored our platform options API to make supplying options for each platform much simpler. An example from before:

public static AppBuilder BuildAvaloniaApp() { var builder = AppBuilder.Configure<App>(); if(RuntimeInformation.IsOSPlatform(OSPlatform.Linux)) builder.UseX11(new X11PlatformOptions() {UseGpu = false}); else if(RuntimeInformation.IsOSPlatform(OSPlatform.OSX)) builder.UseAvaloniaNative(anopts => { anopts.UseGpu = false; anopts.MacOptions.ShowInDock = 0; }); else if(RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) builder.UseWin32(false, true); return builder; }

With the new API becomes much more readable:

public static AppBuilder BuildAvaloniaApp() => AppBuilder.Configure<App>() .UsePlatformDetect() .With(new X11PlatformOptions { UseGpu = false }) .With(new AvaloniaNativePlatformOptions { UseGpu = false }) .With(new MacOSPlatformOptions { ShowInDock = false }) .With(new Win32PlatformOptions { UseDeferredRendering = false });

New designer

Our Visual Studio designer has been rewritten from the ground up with a new previewer engine. You should find the designer more stable and less prone to hangs. A few features are still missing but these will be added back in going forward.

ViewBox

#2066 added a much-requested control from WPF and UWP: the ViewBox .

DropDown renamed to ComboBox

As part of our attempt to reduce the friction experienced when moving from other frameworks to Avalonia, we decided to rename our DropDown control to ComboBox (#2393)

We still have a DropDown control that is marked as [Obsolete] to aid migration, but this will be removed in a future release.

DataGrid

The DataGrid control has now moved to Avalonia.Controls.DataGrid . To use the DataGrid in your application you must add a call to UseDataGrid to your AppBuilder:

public static AppBuilder BuildAvaloniaApp() => AppBuilder.Configure<App>() .UsePlatformDetect() .UseDataGrid();

And add the DataGrid 's default theme to your App.xaml :

<Application.Styles> <StyleInclude Source="avares://Avalonia.Themes.Default/DefaultTheme.xaml"/> <StyleInclude Source="avares://Avalonia.Themes.Default/Accents/BaseLight.xaml"/> <StyleInclude Source="resm:Avalonia.Controls.DataGrid.Themes.Default.xaml?assembly=Avalonia.Controls.DataGrid"/> </Application.Styles>

Multiple Selection in TreeView

#2347 introduced support for multiple selection in the TreeView control.

More ReactiveUI support

#2294 introduced support for ReactiveUI's RoutedViewHost control.

System Font API

#2227 added an API to enumerate the system fonts on the running system.

Other Changes

For all the changes that went into this release, see the milestone.

Breaking Changes

This release has a number of breaking changes. See the breaking changes page on the wiki for more information.

Supporting Avalonia

The best way to support Avalonia is to get involved, implement a feature, fix a bug or help test. See contributing for information on how to get started.

Otherwise you can sponsor Avalonia financially via OpenCollective.

We hope you enjoy developing with Avalonia; please let us know what you're building!