Primary WinUI APIs:
Primary Avalonia APIs:
| WinUI idiom | Avalonia idiom |
|---|---|
| TwoPaneView auto-adaptive layout | responsive Grid/SplitView with breakpoints |
| SelectorBar segmented navigation | TabStrip or styled SelectingItemsControl |
| BreadcrumbBar | ItemsControl + separator template + command navigation |
| PagerControl/PipsPager | command-driven page index + indicator items |
WinUI XAML:
<TwoPaneView WideModeConfiguration="LeftRight"
TallModeConfiguration="TopBottom"
MinWideModeWidth="900">
<TwoPaneView.Pane1>
<BreadcrumbBar ItemsSource="{x:Bind ViewModel.Path}" />
</TwoPaneView.Pane1>
<TwoPaneView.Pane2>
<PipsPager NumberOfPages="{x:Bind ViewModel.PageCount}" SelectedPageIndex="{x:Bind ViewModel.PageIndex, Mode=TwoWay}" />
</TwoPaneView.Pane2>
</TwoPaneView>
WinUI C#:
var pager = new PipsPager
{
NumberOfPages = viewModel.PageCount,
SelectedPageIndex = viewModel.PageIndex
};
Avalonia XAML:
<Grid xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
ColumnDefinitions="Auto,*"
RowDefinitions="Auto,*">
<ItemsControl Grid.Row="0" Grid.ColumnSpan="2" ItemsSource="{Binding PathSegments}" />
<TabStrip Grid.Row="1" Grid.Column="0" ItemsSource="{Binding Sections}" />
<StackPanel Grid.Row="1" Grid.Column="1" Orientation="Horizontal" HorizontalAlignment="Center" Spacing="6">
<Button Content="Prev" Command="{Binding PrevPageCommand}" />
<TextBlock Text="{Binding PageDisplayText}" VerticalAlignment="Center" />
<Button Content="Next" Command="{Binding NextPageCommand}" />
</StackPanel>
</Grid>
Avalonia C#:
var root = new Grid
{
ColumnDefinitions = new ColumnDefinitions("Auto,*"),
RowDefinitions = new RowDefinitions("Auto,*")
};
var tabs = new TabStrip { ItemsSource = viewModel.Sections };
var breadcrumb = new ItemsControl { ItemsSource = viewModel.PathSegments };