Primary WinUI APIs:
TargetType, explicit style by x:KeyPrimary Avalonia APIs:
| WinUI idiom | Avalonia idiom |
|---|---|
| implicit style by control type | type selector (Button) |
| explicit style key usage | style/class/theme indirection |
| stateful style in visual states | selector + pseudo-class (:pointerover, :pressed) |
BasedOn style chains |
selector layering and ControlTheme.BasedOn |
WinUI XAML:
<Page.Resources>
<Style x:Key="AccentButtonStyle"
TargetType="Button"
BasedOn="{StaticResource DefaultButtonStyle}">
<Setter Property="Background" Value="{ThemeResource AccentFillColorDefaultBrush}" />
</Style>
</Page.Resources>
<Button Style="{StaticResource AccentButtonStyle}" Content="Save" />
WinUI C#:
SaveButton.Style = (Style)Application.Current.Resources["AccentButtonStyle"];
Avalonia XAML:
<Styles xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Style Selector="Button.accent">
<Setter Property="Background" Value="{DynamicResource AccentBrush}" />
</Style>
<Style Selector="Button.accent:pointerover">
<Setter Property="Opacity" Value="0.92" />
</Style>
</Styles>
<Button Classes="accent" Content="Save" />
Avalonia C#:
SaveButton.Classes.Add("accent");
ControlTheme when template-level reuse is required, not only simple property overrides.