Primary WinUI APIs:
Primary Avalonia APIs:
| WinUI idiom | Avalonia idiom |
|---|---|
| WinUI control/template/state pipeline | Avalonia control theme/style/selector pipeline |
x:Bind or {Binding} data flow |
{CompiledBinding ...} and typed x:DataType flow |
| WinUI layout/render invalidation model | Avalonia InvalidateMeasure/InvalidateArrange/InvalidateVisual model |
WinUI XAML:
<Page
x:Class="MyApp.Views.SamplePage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:MyApp.Controls">
<TextBox Text="{x:Bind ViewModel.Query, Mode=TwoWay}" />
</Page>
WinUI C#:
var view = new TextBox();
Avalonia XAML:
<UserControl xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:vm="using:MyApp.ViewModels"
xmlns:local="using:MyApp.Controls"
x:DataType="vm:SampleViewModel">
<TextBox Text="{CompiledBinding Query, Mode=TwoWay}" />
</UserControl>
Avalonia C#:
var box = new TextBox(); box.Bind(TextBox.TextProperty, new Binding("Query") { Mode = BindingMode.TwoWay });