GitPedia

Waf

Win Application Framework (WAF) is a lightweight Framework that helps you to create well structured XAML Applications.

From jbe2277·Updated June 18, 2026·View on GitHub·

The Win Application Framework (WAF) is a lightweight Framework that helps you to create well-structured XAML Applications (MAUI, WPF, WinUI). It supports you in applying various architectural patterns: - [Layered Architecture](https://github.com/jbe2277/waf/wiki/Layered-Architecture) - [Model-View-ViewModel Pattern](https://github.com/jbe2277/waf/wiki/Model-View-ViewModel-Pattern) - [DataModel-View-ViewModel Pattern](https://github.com/jbe2277/waf/wiki/DataModel-View-ViewModel-Pattern) The project is written primarily in C#, distributed under the MIT License license, first published in 2015. Key topics include: android, architectural-patterns, csharp, dotnet, flaui.

Latest release: v8.3.0System.Waf 8.3.0
June 13, 2026View Changelog →

Win Application Framework (WAF)

Successor of the WPF Application Framework

The Win Application Framework (WAF) is a lightweight Framework that helps you to create well-structured XAML Applications (MAUI, WPF, WinUI). It supports you in applying various architectural patterns:

How to get started?

  • WAF comes with realistic real-world sample applications. Please have a look at them. See Sample Applications below.
  • The Wiki provides further guidance.

Supported Platforms

  • *.Core (.NET 6.0 and .NET Standard 2.0): Support for all .NET based applications.
  • *.Wpf (.NET 6.0 and .NET Framework 4.7.2): Extended support for Windows Presentation Foundation (WPF).

NuGet Packages

PackageUsageSuccessor of
System.Waf.CoreFor all .NET based applications
System.Waf.WpfFor WPF applicationswaf
System.Waf.UnitTesting.CoreFor unit testing of all .NET based applications
System.Waf.UnitTesting.WpfFor unit testing of WPF applicationswaf.testing

Features

System.Waf.Core

  • Foundation
    • Cache: Provides support for caching a value.
    • Model: Base class that implements INotifyPropertyChanged.
    • ObservableList: Extends the ObservableCollection with support for INotifyCollectionChanging and INotifyCollectionItemChanged.
    • ObservableListViewCore: Provide change notifications for sorting and filtering.
    • SynchronizingList: Represents a collection that synchronizes all its items with the items of the specified original collection.
    • ThrottledAction: Throttling of multiple method calls to improve the responsiveness of an application.
    • ValidatableModel: Base class for a model that supports validation by implementing INotifyDataErrorInfo.
    • WeakEvent: Supports listening to events via a weak reference. This can prevent memory leaks. See WeakEvent page for more details.
  • Applications
    • ApplicationInfo: Provides information about the running application.
    • (Async)DelegateCommand: An implementation of ICommand that delegates Execute and CanExecute.
    • RecentFileList: Most recently used (MRU) file list.
    • ViewModelCore: ViewModel base class with a simple approach to set the DataContext.
  • Presentation
    • SettingsService: Load and save user settings as a XML file.

System.Waf.Wpf

  • Foundation
    • DataErrorInfoSupport: Helper class for working with the legacy IDataErrorInfo interface.
  • Applications
    • ViewModel: Extends the ViewModelCore class and automatically initializes the DataContext with the Dispatcher.
  • Presentation
    • DispatcherHelper: Implementation for DoEvents.
    • ResourceHelper: Helper methods to manage resources in WPF.
    • ValidationHelper: Support for data validation tracking.
    • Converters
      • BoolToVisibilityConverter: Converts a boolean value to and from a Visibility value.
      • InvertBooleanConverter: Inverts a boolean value.
      • NullToVisibilityConverter: Check for null and return the associated Visibility value.
      • StringFormatConverter: Converts an object into a formatted string.
      • ValidationErrorsConverter: Converts a ValidationError collection to a multi-line string error message.
    • Services
      • FileDialogService: Shows an open or save file dialog box.
      • MessageService: Shows messages via the MessageBox.

System.Waf.UnitTesting.Core

Sample Applications

NameTypeDescription
Waf NewsReaderMAUI 10<br/>.NET 10A simple and fast RSS and ATOM news feed reader.<br/><ul><li>Platforms: Android, Windows and iOS</li><li>Architecture: Layering, MVVM, Async patterns</li><li>Sync feeds with multiple devices via MS Graph (OneDrive)</li><li>OAuth authentication</li><li>Responsive UI with Navigation pane</li><li>Validation (Add feed view)</li><li>Localized (English and German)</li><li>UI testing with Appium on Android, iOS and Windows with automated execution via GitHub Actions</li></ul>
Waf WriterWPF<br/>.NET 10A basic word processing application.<br/><ul><li>Architecture: Layering, MVVM</li><li>Ribbon & Tabbed MDI (Multiple Document Interface)</li><li>Animated transition between pages</li><li>Most recently used file list (MRU)</li><li>Message service, Open/Save dialog service</li><li>Print preview & Print dialog</li><li>Localized (English and German)</li><li>UI testing with FlaUI and execution via GitHub Actions</li></ul>
Waf Book LibraryWPF<br/>.NET 10Supports the user to manage books. Borrowed books can be tracked by this application.<br/><ul><li>Architecture: Layering, Extensions, MVVM, DMVVM</li><li>Entity Framework with SQLite</li><li>Validation rules</li><li>Sort & Filter in the DataGrid</li><li>Reporting via WPF FlowDocument & Print support</li><li>UI testing with FlaUI and execution via GitHub Actions</li></ul>
Waf Information ManagerWPF<br/>.NET 10A modular application that comes with a fake email client and an address book.<br/><ul><li>Architecture: Layering, Modularization, MVVM</li><li>Office format ZIP container shared with all modules (Package API and DataContractSerializer)</li><li>Validation rules</li><li>Extensible navigation view & context sensitive toolbar</li><li>Wizard dialog</li><li>UI testing with FlaUI and execution via GitHub Actions</li></ul>
Waf Music ManagerWPF<br/>.NET 10Fast application that makes fun to manage the local music collection.<br/>MS Store (MSIX), WinRT, Media playback, File queries & properties, Async/await, Drag & Drop
Waf DotNetPadWPF<br/>.NET 10Code editor for programming C# and Visual Basic.<br/>MS Store (MSIX), .NET Compiler Platform (Roslyn), AvalonEdit, Auto completion, Async/await
Waf File Hash GeneratorWinUI 3<br/>.NET 10Simple tool that generates the hash values of one or more files.<br/>MS Store (MSIX), Async, Progress, Drag & Drop

Contributors

Showing top 1 contributor by commit count.

View all contributors on GitHub →

This article is auto-generated from jbe2277/waf via the GitHub API.Last fetched: 6/20/2026