Introduction (v1.2)
Legacy documentation for Crystal.Avalonia 1.2.x. Upgrade to v2.0.
Crystal.Avalonia is a lightweight infrastructure layer for Avalonia applications:
- Modules —
IModulefor feature registration - DI — Microsoft.Extensions.DependencyInjection
- View/ViewModel wiring — View-first & ViewModel-first
- AOT — Trimming-friendly
Not an MVVM Framework
Use CommunityToolkit.Mvvm, Prism, ReactiveUI, etc. for MVVM primitives.
Binding Modes
View-first — ViewModelLocator.AutoWireViewModel="True":
<UserControl ViewModelLocator.AutoWireViewModel="True">
<TextBlock Text="{Binding Greeting}"/>
</UserControl>
ViewModel-first — bind ViewModel; ViewLocator resolves View from DI:
<ContentControl Content="{Binding MainViewModel}"/>
Registration (v1.2)
AddMvvm* registers both View and ViewModel in DI:
services.AddMvvmTransient<MainView, MainViewModel>();
services.AddMvvmHybrid<SettingsView, SettingsViewModel>(); // View=Transient, VM=Singleton
services.AddMvvmSingleton<AboutView, AboutViewModel>();
| Method | View | ViewModel |
|---|---|---|
AddMvvmTransient |
Transient | Transient |
AddMvvmHybrid |
Transient | Singleton |
AddMvvmSingleton |
Singleton | Singleton |