Atc.XamlToolkit 1.5.44

dotnet add package Atc.XamlToolkit --version 1.5.44
                    
NuGet\Install-Package Atc.XamlToolkit -Version 1.5.44
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Atc.XamlToolkit" Version="1.5.44" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Atc.XamlToolkit" Version="1.5.44" />
                    
Directory.Packages.props
<PackageReference Include="Atc.XamlToolkit" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Atc.XamlToolkit --version 1.5.44
                    
#r "nuget: Atc.XamlToolkit, 1.5.44"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Atc.XamlToolkit@1.5.44
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Atc.XamlToolkit&version=1.5.44
                    
Install as a Cake Addin
#tool nuget:?package=Atc.XamlToolkit&version=1.5.44
                    
Install as a Cake Tool

ATC.Net Avalonia and WPF

This is a base libraries for building Avalonia or WPF application with the MVVM design pattern.

🎁 Key Features

🏗️ MVVM Foundation

  • ViewModelBase - Base class with INotifyPropertyChanged
  • MainWindowViewModelBase - Main window lifecycle management
  • ViewModelDialogBase - Dialog-specific ViewModels
  • ObservableObject - Lightweight observable pattern

⚡ Commands

  • RelayCommand / RelayCommand<T> - Synchronous commands with CanExecute support
  • RelayCommandAsync / RelayCommandAsync<T> - Async/await commands for responsive UIs
  • Automatic CanExecute refresh - Commands automatically update UI state
  • Error handling support - Built-in IErrorHandler interface for graceful error management

🔔 Messaging System

Decouple your ViewModels with a powerful messaging infrastructure:

  • Messenger - Central message bus for app-wide communication
  • GenericMessage<T> - Send typed messages between components
  • NotificationMessage - Simple notifications with optional callbacks
  • PropertyChangedMessage<T> - Broadcast property changes across ViewModels

Perfect for scenarios like:

  • Cross-ViewModel communication without direct references
  • Event aggregation patterns
  • Plugin architectures
  • Loosely-coupled component communication
// Send a message
Messenger.Default.Send(new GenericMessage<User>(currentUser));

// Receive a message
Messenger.Default.Register<GenericMessage<User>>(this, msg =>
{
    var user = msg.Content;
    // Handle the user...
});

Learn more: Messaging System Documentation

🎨 Value Converters

Extensive collection of ready-to-use XAML converters for both WPF and Avalonia:

Bool Converters
  • BoolToInverseBoolValueConverter
  • BoolToVisibilityCollapsedValueConverter
  • BoolToVisibilityVisibleValueConverter
  • BoolToWidthValueConverter
  • MultiBoolToBoolValueConverter (AND/OR logic)
  • MultiBoolToVisibilityVisibleValueConverter
String Converters
  • StringNullOrEmptyToBoolValueConverter
  • StringNullOrEmptyToInverseBoolValueConverter
  • StringNullOrEmptyToVisibilityVisibleValueConverter
  • StringNullOrEmptyToVisibilityCollapsedValueConverter
  • ToLowerValueConverter / ToUpperValueConverter

See detailed Value Converters documentation

⚙️ Source Generators

Eliminate boilerplate with powerful code generation:

  • [ObservableProperty] - Auto-generate properties with change notification
  • [RelayCommand] - Auto-generate command properties from methods
  • [DependencyProperty] (WPF) - Auto-generate dependency properties
  • [AttachedProperty] (WPF) - Auto-generate attached properties
  • [RoutedEvent] (WPF) - Auto-generate routed events

Learn more about each generator:

🚀 Performance Optimizations

  • BooleanBoxes - Cached boolean boxing for reduced memory allocations
  • WeakAction/WeakFunc - Memory-leak prevention for event handlers and callbacks
  • PropertyDefaultValueConstants - Shared default values for common property types

🔧 Utilities

  • DesignModeHelper - Detect design-time vs runtime for better designer experience
  • Base Converter Classes - ValueConverterBase and MultiValueConverterBase for creating custom converters
  • Error Handling - IErrorHandler interface for centralized command error management

🚀 Quick Start

Installation

Install via NuGet Package Manager or .NET CLI:

For WPF:

dotnet add package Atc.XamlToolkit.Wpf

For Avalonia:

dotnet add package Atc.XamlToolkit.Avalonia

Basic Usage

// Create a ViewModel with source-generated properties and commands
public partial class MainViewModel : ViewModelBase
{
    [ObservableProperty]
    private string userName;

    [ObservableProperty]
    private bool isLoading;

    [RelayCommand]
    private async Task LoadDataAsync()
    {
        IsLoading = true;
        // Load data...
        IsLoading = false;
    }
}

📖 Read the full Getting Started Guide for a complete walkthrough.

Requirements

NuGet Packages Provided in this Repository

Nuget package Description Dependencies
NuGet Version Base package with ViewModelBase, ObservableObject Atc & Atc.XamlToolkit.SourceGenerators
NuGet Version RelayCommand, MainWindowViewModelBase for Avalonia Atc.XamlToolkit
NuGet Version RelayCommand, MainWindowViewModelBase for WPF Atc.XamlToolkit.SourceGenerators

📚 Documentation

Get Started

Core Concepts

Advanced Topics

Platform-Specific (WPF Only)

Source Generator Examples

Example for ViewModel classes with source generation:

MVVM Source Generation

For more details, see the MVVM section.

🎯 Complete Feature List

Core MVVM Components

Component Description Package
ViewModelBase Base ViewModel with INotifyPropertyChanged Atc.XamlToolkit
MainWindowViewModelBase Main window lifecycle management Atc.XamlToolkit.Wpf/Avalonia
ViewModelDialogBase Dialog-specific ViewModels Atc.XamlToolkit
ObservableObject Lightweight observable pattern Atc.XamlToolkit

Commands

Command Description Async Support
RelayCommand Synchronous command No
RelayCommand<T> Synchronous command with parameter No
RelayCommandAsync Asynchronous command Yes
RelayCommandAsync<T> Asynchronous command with parameter Yes

All commands support:

  • CanExecute with automatic refresh
  • ✅ Error handling via IErrorHandler
  • ✅ Auto-generation via [RelayCommand] attribute

Messaging System

Type Purpose
Messenger Central message bus
GenericMessage<T> Typed message passing
NotificationMessage String-based notifications
NotificationMessageAction Messages with callbacks
NotificationMessageAction<T> Messages with parameterized callbacks
PropertyChangedMessage<T> Property change broadcasts
NotificationMessageWithCallback Generic callback support

Source Generators

Generator Platform Description
[ObservableProperty] WPF, Avalonia Auto-generate observable properties
[RelayCommand] WPF, Avalonia Auto-generate command properties
[DependencyProperty] WPF only Auto-generate dependency properties
[AttachedProperty] WPF only Auto-generate attached properties
[RoutedEvent] WPF only Auto-generate routed events

Value Converters

Bool Converters (WPF & Avalonia):

  • BoolToInverseBoolValueConverter
  • BoolToVisibilityCollapsedValueConverter
  • BoolToVisibilityVisibleValueConverter
  • BoolToWidthValueConverter
  • MultiBoolToBoolValueConverter
  • MultiBoolToVisibilityVisibleValueConverter

String Converters (WPF & Avalonia):

  • StringNullOrEmptyToBoolValueConverter
  • StringNullOrEmptyToInverseBoolValueConverter
  • StringNullOrEmptyToVisibilityVisibleValueConverter
  • StringNullOrEmptyToVisibilityCollapsedValueConverter
  • ToLowerValueConverter
  • ToUpperValueConverter

Performance Optimizations

Optimization Benefit
BooleanBoxes Zero-allocation boolean boxing
WeakAction Memory leak prevention
WeakFunc<T> Memory leak prevention with return values
PropertyDefaultValueConstants Shared default values

Utilities

Utility Purpose
DesignModeHelper Detect design-time vs runtime
ValueConverterBase Base class for custom converters
MultiValueConverterBase Base class for multi-value converters
IErrorHandler Centralized error handling

🌟 Why Choose Atc.XamlToolkit?

  • Modern - Built for .NET 9 with latest C# features
  • Cross-platform - Supports both WPF and Avalonia
  • High Performance - Optimized for minimal allocations
  • Source Generators - Eliminate boilerplate code
  • Well Documented - Comprehensive documentation and examples
  • Battle Tested - Used in production applications
  • Open Source - MIT licensed and community-driven

How to contribute

Contribution Guidelines

Coding Guidelines

Product Compatible and additional computed target framework versions.
.NET net9.0 is compatible.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • net9.0

    • Atc (>= 2.0.562)

NuGet packages (4)

Showing the top 4 NuGet packages that depend on Atc.XamlToolkit:

Package Downloads
Atc.Wpf

A base library for building WPF application with the MVVM design pattern.

Atc.Wpf.Controls

A base library for building WPF application.

Atc.XamlToolkit.Wpf

Atc.XamlToolkit.Wpf is a library for building WPF applications using the MVVM design pattern.

Atc.XamlToolkit.Avalonia

Atc.XamlToolkit.Avalonia is a library for building Avalonia applications using the MVVM design pattern.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.5.44 76 10/5/2025
1.5.43 157 10/2/2025
1.5.42 323 5/12/2025
1.5.41 232 5/11/2025
1.5.40 226 5/11/2025
1.5.39 108 5/10/2025
1.5.38 112 5/9/2025
1.5.37 194 5/8/2025
1.5.36 197 5/6/2025
1.5.35 174 5/6/2025
1.5.34 222 5/5/2025
1.5.33 184 5/4/2025
1.5.30 200 5/4/2025
1.5.28 180 4/30/2025
1.5.26 215 4/23/2025
1.5.25 194 4/23/2025
1.5.24 205 4/22/2025
1.5.23 196 4/22/2025
1.5.22 201 4/22/2025
1.5.21 202 4/21/2025
1.5.20 204 4/21/2025
1.5.19 203 4/21/2025
1.5.18 181 4/20/2025
1.5.16 198 4/20/2025
1.5.15 223 4/10/2025
1.5.14 196 4/10/2025
1.5.12 215 4/10/2025
1.5.7 222 4/5/2025
1.4.4 138 4/5/2025
1.4.0 221 3/27/2025
1.3.1 196 3/26/2025
1.0.0 530 3/26/2025