Atc.Wpf.Controls 3.0.3

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.3
                    
NuGet\Install-Package Atc.Wpf.Controls -Version 3.0.3
                    
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.3" />
                    
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.3" />
                    
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.3
                    
#r "nuget: Atc.Wpf.Controls, 3.0.3"
                    
#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.3
                    
#: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.3
                    
Install as a Cake Addin
#tool nuget:?package=Atc.Wpf.Controls&version=3.0.3
                    
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 (2)

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

Package Downloads
Atc.Wpf.Controls.Sample

A base library for building Sample WPF application.

Atc.Wpf.NetworkControls

Package Description

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
3.0.4 39 1/8/2026
3.0.3 39 1/7/2026
3.0.1 41 1/6/2026
2.0.665 216 10/20/2025
2.0.664 203 10/6/2025
2.0.659 193 10/2/2025
2.0.657 336 9/15/2025
2.0.651 211 7/14/2025
2.0.647 334 5/13/2025
2.0.646 312 5/12/2025
2.0.642 218 5/7/2025
2.0.640 226 5/5/2025
2.0.638 224 5/4/2025
2.0.636 242 4/22/2025
2.0.631 250 4/10/2025
2.0.627 273 4/5/2025
2.0.626 161 4/5/2025
2.0.624 252 4/3/2025
2.0.621 260 4/2/2025
2.0.618 230 4/1/2025
2.0.605 231 3/26/2025
2.0.599 256 3/17/2025
2.0.597 242 3/17/2025
2.0.596 227 3/16/2025
2.0.595 220 3/16/2025
2.0.594 216 3/16/2025
2.0.593 206 3/16/2025
2.0.592 213 3/16/2025
2.0.582 262 2/19/2025
2.0.581 183 2/19/2025
2.0.580 206 2/19/2025
2.0.579 211 2/19/2025
2.0.578 197 2/18/2025
2.0.574 191 2/16/2025
2.0.569 169 2/16/2025
2.0.568 174 2/16/2025
2.0.565 179 2/15/2025
2.0.563 182 2/15/2025
2.0.562 193 2/12/2025
2.0.561 208 2/10/2025
2.0.547 194 2/9/2025
2.0.545 202 2/8/2025
2.0.534 202 2/8/2025
2.0.530 194 1/19/2025
2.0.524 229 6/13/2024
2.0.519 219 6/12/2024
2.0.517 209 6/11/2024
2.0.511 189 6/7/2024
2.0.505 316 4/26/2024
2.0.499 285 4/7/2024
2.0.495 222 3/26/2024
2.0.493 201 3/22/2024
2.0.491 190 3/21/2024
2.0.484 198 3/21/2024
2.0.480 203 3/18/2024
2.0.468 241 3/10/2024
2.0.449 222 3/4/2024
2.0.424 228 2/25/2024
2.0.419 227 2/22/2024
2.0.413 241 2/22/2024
2.0.408 204 2/22/2024
2.0.406 218 2/21/2024
2.0.403 195 2/18/2024
2.0.398 262 2/10/2024
2.0.396 200 2/10/2024
2.0.394 209 2/9/2024
2.0.392 230 2/9/2024
2.0.387 205 2/7/2024
2.0.385 231 1/27/2024
2.0.382 238 1/23/2024
2.0.379 295 1/3/2024
2.0.377 247 1/3/2024
2.0.361 248 12/17/2023
2.0.358 236 12/16/2023
2.0.344 220 12/13/2023
2.0.342 273 12/9/2023
2.0.337 241 12/3/2023
2.0.333 179 12/3/2023
2.0.331 223 11/30/2023
2.0.312 202 11/24/2023
2.0.308 217 11/24/2023
2.0.297 294 11/11/2023
2.0.290 195 11/8/2023
2.0.285 228 11/1/2023
2.0.280 215 10/25/2023
2.0.265 353 9/10/2023
2.0.260 282 8/9/2023
2.0.242 307 7/22/2023
2.0.195 300 7/4/2023
2.0.178 868 11/18/2022
2.0.176 452 11/16/2022
2.0.174 474 11/16/2022
2.0.168 562 11/13/2022
2.0.164 540 11/10/2022
2.0.162 496 11/8/2022
2.0.160 518 11/7/2022
2.0.128 649 10/17/2022
2.0.125 537 10/15/2022
2.0.119 531 10/14/2022
2.0.115 535 10/13/2022
2.0.107 524 10/13/2022
2.0.104 577 10/12/2022
2.0.100 576 10/11/2022
2.0.89 588 10/9/2022
2.0.78 525 10/6/2022
2.0.75 551 10/3/2022
2.0.72 587 10/2/2022
2.0.60 618 9/26/2022
2.0.51 624 9/22/2022