Atc.Wpf.Controls 3.0.4

There is a newer version of this package available.
See the version list below for details.
dotnet add package Atc.Wpf.Controls --version 3.0.4
                    
NuGet\Install-Package Atc.Wpf.Controls -Version 3.0.4
                    
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.Wpf.Controls" Version="3.0.4" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Atc.Wpf.Controls" Version="3.0.4" />
                    
Directory.Packages.props
<PackageReference Include="Atc.Wpf.Controls" />
                    
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.Wpf.Controls --version 3.0.4
                    
#r "nuget: Atc.Wpf.Controls, 3.0.4"
                    
#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.Wpf.Controls@3.0.4
                    
#: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.Wpf.Controls&version=3.0.4
                    
Install as a Cake Addin
#tool nuget:?package=Atc.Wpf.Controls&version=3.0.4
                    
Install as a Cake Tool

ATC.Net WPF

A comprehensive set of modern, enterprise-ready WPF libraries for building professional desktop applications with the MVVM design pattern. This framework provides a rich collection of reusable controls, theming support, font icons, and MVVM infrastructure to accelerate WPF application development.

✨ Key Features

  • 🎨 Rich Control Library - 25+ labeled controls, color pickers, selectors, and specialized input controls
  • 🌓 Light/Dark Theming - Built-in theme support for all controls with easy customization
  • 🎯 MVVM Ready - Complete MVVM infrastructure with observable properties and relay commands
  • 🔤 Font Icon Support - Render SVG and image resources based on fonts
  • Smart Validation - Deferred validation pattern for better user experience
  • 📐 Advanced Layouts - GridEx, StaggeredPanel, UniformSpacingPanel and more
  • 🌍 Localization - Built-in translation and localization support
  • 🎭 Value Converters - Extensive collection of XAML value converters

Requirements

NuGet Packages Provided in this Repository

Nuget package Description Dependencies
NuGet Version Base Controls, ValueConverters, Extensions etc. <ul><li>Atc</li><li>Atc.XamlToolkit</li><li>Atc.XamlToolkit.Wpf</li></ul>
NuGet Version Miscellaneous UI Controls <ul><li>Atc.Wpf</li><li>Atc.Wpf.FontIcons</li><li>Atc.Wpf.Theming</li><li>Atc.XamlToolkit</li><li>Atc.XamlToolkit.Wpf</li></ul>
NuGet Version Network scanning and discovery controls <ul><li>Atc</li><li>Atc.Network</li><li>Atc.Wpf</li><li>Atc.Wpf.Controls</li><li>Atc.XamlToolkit</li><li>Atc.XamlToolkit.Wpf</li></ul>
NuGet Version Controls for creating WPF sample apps <ul><li>Atc</li><li>Atc.Wpf</li><li>Atc.Wpf.Theming</li><li>Atc.Wpf.Controls</li><li>MdXaml</li></ul>
NuGet Version Render Svg and Img resources based on fonts <ul><li>Atc.Wpf</li></ul>
NuGet Version Theming for Light & Dark mode for WPF base controls <ul><li>Atc.Wpf</li><li>Atc.XamlToolkit</li><li>Atc.XamlToolkit.Wpf</li><li>ControlzEx</li><li>Microsoft.Windows.CsWin32</li></ul>

🔎 Demonstration Application

The demonstration application, Atc.Wpf.Sample, functions as a control explorer. It provides quick visualization of a given control, along with options for copying and pasting the XAML markup and/or the C# code for how to use it.

🎈 Playground and Viewer for a Given Control or Functionality

The following example is taken from the ReplayCommandAsync which illustrates its usage:

  • The Sample tab shows how to use the control or feature.
  • The XAML tab displays the corresponding XAML markup.
  • The CodeBehind tab reveals the underlying code-behind.
  • The ViewModel tab displays the associated ViewModel, if used.
  • The Readme tab displays the associated [control]_Readme.md, if exist.
Sample Img XAML Img
CodeBehind Img ViewModel Img

🔦 Initial glimpse at the demonstration application

Light-Mode Dark-Mode
Wpf - AutoGrid Img Wpf - AutoGrid Img
Wpf.Controls - Label MIX Img Wpf.Controls - Label MIX Img
Wpf.Theming - ImageButton Img Wpf.Theming - ImageButton Img
Wpf.FontIcons - Viewer Img Wpf.FontIcons - Viewer Img

🚀 Quick Start Guide

Installation

Add the NuGet packages to your .csproj file:

<ItemGroup>
  <PackageReference Include="Atc.Wpf" Version="2.*" />
  <PackageReference Include="Atc.Wpf.Controls" Version="2.*" />
  <PackageReference Include="Atc.Wpf.FontIcons" Version="2.*" />
  <PackageReference Include="Atc.Wpf.Theming" Version="2.*" />
</ItemGroup>

Configuration

1. Update App.xaml

Add the required resource dictionaries to enable theming and control styles:

<Application
    x:Class="YourApp.App"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:atc="https://github.com/atc-net/atc-wpf/tree/main/schemas">
    <Application.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                
                <ResourceDictionary Source="pack://application:,,,/Atc.Wpf.Theming;component/Styles/Default.xaml" />

                
                <ResourceDictionary Source="pack://application:,,,/Atc.Wpf.Controls;component/Styles/Controls.xaml" />
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </Application.Resources>
</Application>

2. Use Controls in XAML

Now you can use all controls with full theming support:

<Window
    xmlns:atc="https://github.com/atc-net/atc-wpf/tree/main/schemas"
    ...>

    
    <atc:LabelTextBox
        LabelText="User Name"
        Text="{Binding UserName}"
        IsMandatory="True" />

    
    <atc:LabelEndpointBox
        LabelText="API Endpoint"
        NetworkProtocol="Https"
        Value="{Binding EndpointUri}" />

    
    <Button Content="Save" Command="{Binding SaveCommand}" />
    <TextBox Text="{Binding Notes}" />
</Window>

All standard WPF controls (Button, TextBox, ComboBox, etc.) are automatically styled with Light/Dark theme support.

🎯 Label Controls vs Base Controls

Understanding when to use each type of control:

Aspect Label Controls Base Controls
Label Integrated label with text No label (you provide your own)
Validation Built-in validation message display Validation logic only
Mandatory Asterisk indicator support Not applicable
Use Case Standard forms and dialogs Custom layouts and composite controls
Example <atc:LabelTextBox LabelText="Name" Text="{Binding Name}" /> <atc:IntegerBox Value="{Binding Count}" />

Quick Guideline:

  • Use Label Controls for standard forms where you want consistency and less markup
  • Use Base Controls when you need custom layouts or are building your own controls

💝 MVVM Made Easy

The Atc.Wpf package provides a complete MVVM infrastructure that makes it easy to separate UI and business logic using the MVVM pattern.

Key MVVM Features

  • Observable Properties - Automatic INotifyPropertyChanged implementation
  • Relay Commands - Simple command implementation with CanExecute support
  • Async Commands - Built-in support for async/await patterns
  • Source Generators - Automatic code generation for ViewModels and properties

Learn More

Quick MVVM Example

public partial class MainViewModel : ViewModelBase
{
    [ObservableProperty]
    private string userName = string.Empty;

    [ObservableProperty]
    private bool isEnabled = true;

    [RelayCommand(CanExecute = nameof(CanSave))]
    private async Task SaveAsync()
    {
        await SaveUserDataAsync(UserName);
    }

    private bool CanSave() => !string.IsNullOrEmpty(UserName);
}

📚 Comprehensive Documentation

Note: While this README provides an overview, the best way to explore all controls and components is to run the Atc.Wpf.Sample application, which includes interactive examples with XAML and code-behind for every control! �

💟 Atc.Wpf - Core WPF Library

The foundation library providing essential WPF controls, layouts, and utilities.

Layout Controls

Modern layout panels for advanced UI composition:

Media Controls

  • SvgImage - SVG image rendering control

Helpers & Utilities

  • PanelHelper - Helper methods for panel layout calculations

Additional Features

💟 Atc.Wpf.Controls - Rich Control Library

A comprehensive collection of specialized WPF controls for enterprise applications.

⭐ Label Controls (25+ Controls)

📖 Complete Label Controls Documentation

Labeled input controls with built-in validation, mandatory indicators, and consistent styling:

  • Text Input: LabelTextBox, LabelPasswordBox
  • Number Input: LabelIntegerBox, LabelDecimalBox, LabelIntegerXyBox, LabelDecimalXyBox, LabelPixelSizeBox
  • Date/Time: LabelDatePicker, LabelTimePicker, LabelDateTimePicker
  • Selection: LabelCheckBox, LabelComboBox, LabelToggleSwitch
  • Selectors: LabelAccentColorSelector, LabelCountrySelector, LabelFontFamilySelector, LabelLanguageSelector, LabelThemeSelector, LabelWellKnownColorSelector
  • Pickers: LabelColorPicker, LabelDirectoryPicker, LabelFilePicker
  • Network: LabelEndpointBox (protocol + host + port with validation)
  • Display: LabelContent, LabelTextInfo

All label controls support:

  • ✅ Deferred validation (shows errors only after user interaction)
  • ✅ Mandatory field indicators
  • ✅ Consistent styling and theming
  • ✅ MVVM-friendly data binding

⭐ Base Controls (14 Controls)

📖 Complete Base Controls Documentation

Unlabeled input controls that provide core functionality without the label wrapper:

  • Text Input: RichTextBoxEx
  • Number Input: IntegerBox, DecimalBox, IntegerXyBox, DecimalXyBox, PixelSizeBox
  • Time Selection: ClockPanelPicker
  • Toggle: ToggleSwitch
  • Pickers: ColorPicker, DirectoryPicker, FilePicker
  • Network: EndpointBox (protocol + host + port with validation)

Base controls are perfect for:

  • 🎯 Custom layouts where you position labels yourself
  • 🧩 Building composite controls
  • 📐 Situations where labels are not needed
  • 🔨 Creating your own labeled control wrappers

Color Controls

Additional Resources

💟 Atc.Wpf.FontIcons - Font-Based Icons

Render SVG and image resources using font-based icon systems for crisp, scalable icons.

Features

  • 🎨 Scalable vector icons
  • 🎯 Font-based rendering
  • 📦 Multiple icon font support
  • 🌈 Color and size customization

Resources

💟 Atc.Wpf.Theming - Light & Dark Mode

Complete theming infrastructure with Light and Dark mode support for all WPF controls.

Features

  • 🌓 Light/Dark theme switching
  • 🎨 Accent color customization
  • 🎯 Automatic control styling
  • 🔄 Runtime theme changes
  • 📱 Consistent visual design

Resources

💟 Atc.Wpf.NetworkControls - Network Discovery Controls

Specialized controls for network scanning and host discovery, built on the Atc.Network library.

NetworkScannerView Control

A comprehensive network scanner control that displays scan results in a sortable, filterable ListView.

Features:

  • 🔍 IP range scanning with configurable start/end addresses
  • 📊 Real-time progress reporting with cancellation support
  • 🌐 Displays IP address, hostname, MAC address, and vendor information
  • 🚪 Port scanning with configurable port lists
  • 📶 Network quality indicators (ping status visualization)
  • 🔄 Sortable columns with click-to-sort headers
  • 🎛️ Configurable column visibility
  • 🔎 Built-in filtering (show only successful pings, show only hosts with open ports)
  • 🌍 Localization support (English, Danish, German)

Usage:

<Window xmlns:atcNetwork="clr-namespace:Atc.Wpf.NetworkControls;assembly=Atc.Wpf.NetworkControls">
    <atcNetwork:NetworkScannerView DataContext="{Binding NetworkScannerVm}" />
</Window>
// ViewModel setup
var viewModel = new NetworkScannerViewModel
{
    StartIpAddress = "192.168.1.1",
    EndIpAddress = "192.168.1.254",
    PortsNumbers = [80, 443, 22, 3389]
};

// Start scanning
await viewModel.ScanCommand.ExecuteAsync(null);

// Handle selection changes
viewModel.EntrySelected += (sender, args) =>
{
    var selectedHost = args.NetworkHost;
    // Handle selected host
};

ViewModels:

  • NetworkScannerViewModel - Main ViewModel for the scanner control
  • NetworkHostViewModel - Represents a discovered network host
  • NetworkScannerColumnsViewModel - Controls column visibility
  • NetworkScannerFilterViewModel - Controls result filtering

🎯 Source Generators

Atc.Wpf includes powerful source generators to reduce boilerplate code:


🤝 Contributing

We welcome contributions! Please read our guidelines:

📄 License

This project is licensed under the MIT License - see the LICENSE file for details.

🙏 Acknowledgments

Built with ❤️ by the ATC.Net team and contributors.

Product Compatible and additional computed target framework versions.
.NET net10.0-windows7.0 is compatible. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (4)

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

Package Downloads
Atc.Wpf.Controls.Sample

Reusable WPF controls for building sample and demonstration applications.

Atc.Wpf.Network

WPF network controls library providing network scanning and discovery components.

Atc.Wpf.Components

WPF composite component library providing dialogs, viewers, settings panels, and notifications.

Atc.Wpf.Forms

WPF form library providing labeled form field controls with built-in validation for data entry.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
4.0.4 41 1/21/2026
4.0.3 75 1/20/2026
4.0.1 80 1/19/2026
3.0.4 91 1/8/2026
3.0.3 88 1/7/2026
3.0.1 80 1/6/2026
2.0.665 217 10/20/2025
2.0.664 211 10/6/2025
2.0.659 198 10/2/2025
2.0.657 338 9/15/2025
2.0.651 212 7/14/2025
2.0.647 335 5/13/2025
2.0.646 312 5/12/2025
2.0.642 223 5/7/2025
2.0.640 230 5/5/2025
2.0.638 229 5/4/2025
2.0.636 243 4/22/2025
2.0.631 252 4/10/2025
2.0.627 275 4/5/2025
2.0.626 165 4/5/2025
2.0.624 254 4/3/2025
2.0.621 263 4/2/2025
2.0.618 233 4/1/2025
2.0.605 236 3/26/2025
2.0.599 257 3/17/2025
2.0.597 246 3/17/2025
2.0.596 229 3/16/2025
2.0.595 221 3/16/2025
2.0.594 220 3/16/2025
2.0.593 208 3/16/2025
2.0.592 217 3/16/2025
2.0.582 264 2/19/2025
2.0.581 187 2/19/2025
2.0.580 211 2/19/2025
2.0.579 214 2/19/2025
2.0.578 199 2/18/2025
2.0.574 194 2/16/2025
2.0.569 170 2/16/2025
2.0.568 175 2/16/2025
2.0.565 181 2/15/2025
2.0.563 188 2/15/2025
2.0.562 196 2/12/2025
2.0.561 212 2/10/2025
2.0.547 196 2/9/2025
2.0.545 203 2/8/2025
2.0.534 204 2/8/2025
2.0.530 195 1/19/2025
2.0.524 229 6/13/2024
2.0.519 221 6/12/2024
2.0.517 210 6/11/2024
2.0.511 191 6/7/2024
2.0.505 319 4/26/2024
2.0.499 291 4/7/2024
2.0.495 226 3/26/2024
2.0.493 202 3/22/2024
2.0.491 192 3/21/2024
2.0.484 204 3/21/2024
2.0.480 205 3/18/2024
2.0.468 243 3/10/2024
2.0.449 225 3/4/2024
2.0.424 231 2/25/2024
2.0.419 228 2/22/2024
2.0.413 243 2/22/2024
2.0.408 206 2/22/2024
2.0.406 219 2/21/2024
2.0.403 196 2/18/2024
2.0.398 263 2/10/2024
2.0.396 203 2/10/2024
2.0.394 213 2/9/2024
2.0.392 233 2/9/2024
2.0.387 208 2/7/2024
2.0.385 234 1/27/2024
2.0.382 240 1/23/2024
2.0.379 298 1/3/2024
2.0.377 252 1/3/2024
2.0.361 250 12/17/2023
2.0.358 240 12/16/2023
2.0.344 223 12/13/2023
2.0.342 279 12/9/2023
2.0.337 242 12/3/2023
2.0.333 180 12/3/2023
2.0.331 228 11/30/2023
2.0.312 204 11/24/2023
2.0.308 221 11/24/2023
2.0.297 296 11/11/2023
2.0.290 198 11/8/2023
2.0.285 229 11/1/2023
2.0.280 220 10/25/2023
2.0.265 358 9/10/2023
2.0.260 285 8/9/2023
2.0.242 309 7/22/2023
2.0.195 303 7/4/2023
2.0.178 869 11/18/2022
2.0.176 455 11/16/2022
2.0.174 477 11/16/2022
2.0.168 565 11/13/2022
2.0.164 542 11/10/2022
2.0.162 500 11/8/2022
2.0.160 521 11/7/2022
2.0.128 654 10/17/2022
2.0.125 539 10/15/2022
2.0.119 534 10/14/2022
2.0.115 537 10/13/2022
2.0.107 527 10/13/2022
2.0.104 582 10/12/2022
2.0.100 577 10/11/2022
2.0.89 589 10/9/2022
2.0.78 528 10/6/2022
2.0.75 554 10/3/2022
2.0.72 589 10/2/2022
2.0.60 622 9/26/2022
2.0.51 629 9/22/2022