Skip to content

Upgrading to Avalonia v11

Damian edited this page Mar 29, 2024 · 9 revisions

This page will help you upgrade your application to the latest Avalonia v11.

DataTemplates and DataTypes

This is a breaking change that affects your Views.

Developers must define the DataType property of the DataTemplate and ItemTemplate elements.

Tips To Avoid Issues

Use CompileBindings

When using Compiled Bindings in your XAML, not only will your applications perform better, but it will also allow the compiler will throw an error immediately so that you do not get any surprises at runtime.

Al child nodes will inherit this property, so you can enable it in your root node and disable it for a specific child if needed. Below are the 3 key properties which must be set to use in this fashion.

  1. xmlns:vm="using:NAMESPACE.OF.VIEWMODEL"
  2. x:CompileBindings="True"
  3. x:DataType="vm:YOURVIEWMODEL"

For more information, see the official documentation of Compiled Bindings to assist your project's needs better.

Sample:

<UserControl xmlns="https://github.com/avaloniaui"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:system="clr-namespace:System;assembly=mscorlib"
             xmlns:vm="using:SampleMvvmApp.ViewModels"
             x:Class="SampleMvvmApp.Views.DashboardView"
             x:CompileBindings="True"
             x:DataType="vm:DashboardViewModel">

AvaloniaLocator

IRuntimePlatform

Avalonia v0.10:

// Use the following when the `revision` wildcard is in use.
Version? version = System.Reflection.Assembly.GetExecutingAssembly()?.GetName().Version;
DateTime buildDate = version is not null ? new DateTime(2000, 1, 1).AddDays(version.Build).AddSeconds(version.Revision * 2) : default;
string ver = $"{version}{(version?.Revision != 0 ? $" ({buildDate})" : string.Empty)}";

string platform = "";
RuntimePlatformInfo? info = AvaloniaLocator.Current.GetService<IRuntimePlatform>()?.GetRuntimeInfo();
platform = info.Value.OperatingSystem.ToString();
Clone this wiki locally