🎯 Avalonia Templates for VS Code
Generate fully-structured Avalonia UI components with one click. No more boilerplate. Just clean, scalable code.

A powerful VS Code extension that automates the creation of Avalonia UI components — including Window, UserControl, TemplatedControl, Styles, and ResourceDictionary — with proper namespace handling, directory structure, automatic using statements, and real-time logging.
Perfect for developers building cross-platform desktop apps with Avalonia UI in C# and XAML.
🚀 Features
✨ Core Template Generation
| Feature |
Description |
| Window |
Creates a complete Window.axaml + WindowViewModel.cs with proper inheritance from ViewModelBase. |
| UserControl |
Generates UserControl.axaml + matching ViewModel with correct namespace & folder structure. |
| TemplatedControl |
Boilerplate-ready templated control with TemplatePart attributes and default style. |
| Styles |
Auto-generates Styles.axaml with theme-aware resource definitions. |
| ResourceDictionary |
Clean, isolated ResourceDictionary.axaml files with optional namespace setup. |
🔧 Advanced Automation
- Smart Namespace Detection: Automatically detects project root and applies correct namespaces based on folder hierarchy.
- Automatic
using Statements: Adds only the necessary using directives for Avalonia and your project’s ViewModel base class — no clutter.
- Folder Structure Preservation: Creates ViewModels in
/ViewModels/ subfolder, matching your project’s layout.
- Configurable Logging: Control verbosity with
avaloniaTemplates.logLevel (debug, info, warn, error, none).
📊 Real-Time Diagnostics
- Built-in singleton logger with color-coded output in VS Code's Output Panel.
- Real-time progress tracking during template generation.
- Detailed error messages with actionable suggestions.
💡 No more guessing which namespace to use or where to put the file. The extension knows your project structure.
🖼️ Preview
📹 Watch how it works in action:
➤ Creating a Window

➤ Creating an UserControl

⚙️ Configuration
Customize logging behavior via VS Code settings:
{
"avaloniaTemplates.logLevel": "info"
}
Available levels:
debug — All logs (ideal for development)
info — Default — Shows creation steps
warn — Only warnings and errors
error — Critical issues only
none — Silent mode
💬 To access settings: Ctrl+Shift+P → “Preferences: Open Settings (JSON)”
🛠️ Installation
- Open VS Code.
- Go to Extensions (
Ctrl+Shift+X).
- Search for “Avalonia Templates” by ADdy2142.
- Click Install.
✅ Requirements:
- VS Code 1.91+
- An existing Avalonia project (with
.axaml files)
- .NET SDK installed
🔍 Extension activates automatically when you open any .axaml file or have one in your workspace.
📂 Generated Structure Example
👉 Window Example
When creating a Window named MainWindow inside Views/:
MyAvaloniaApp/
├── Views/
│ └── MainWindow.axaml
├── ViewModels/
│ └── MainWindowViewModel.cs ← Auto-generated!
└── ...
MainWindowViewModel.cs includes:
using System;
namespace MyAvaloniaApp.ViewModels; // ✅ Correct namespace!
public class MainWindowViewModel : ViewModelBase // ✅ Inherited!
{
public MainWindowViewModel()
{
// Initialize properties here
}
}
👉 UserControl Example
When creating a UserControl named SomeUserControl inside Views/UserControls/:
MyAvaloniaApp/
├── Views/
│ └── UserControls/
│ └── SomeUserControl.axaml
├── ViewModels/
│ └── UserControls/
│ └── SomeUserControlViewModel.cs ← Auto-generated!
└── ...
SomeUserControlViewModel.cs includes:
using System;
using MyAvaloniaApp.ViewModels; // ✅ Auto using statement!
namespace MyAvaloniaApp.ViewModels.UserControls; // ✅ Correct nested namespace!
public class SomeUserControlViewModel : ViewModelBase // ✅ Inherited!
{
public SomeUserControlViewModel()
{
// Initialize properties or commands here
}
}
💡 The extension automatically detects if you're creating a UserControl in a subfolder like /Views/UserControls/ and mirrors the structure in /ViewModels/UserControls/ — keeping your MVVM architecture clean and scalable.
📜 Change Log
See full details in CHANGELOG.md
🤝 Contributing
Found a bug? Have a feature request?
👉 Open an Issue on GitHub
👨💻 Pull requests are welcome!
📄 License
This project is licensed under the AGPL-3.0-only license — see LICENSE for details.
Made with ❤️ for Avalonia Developers