The Win Application Framework (WAF) is a lightweight Framework that helps you to create well-structured XAML Applications in WPF and UWP. 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.
- The fastest way to create a WAF project is by using the WAF Visual Studio Project Template. Please update the WAF NuGet packages to the latest stable version after project creation.
- *.Core (.NET Standard 2.0 and .NET Framework 4.6.1): Support for all .NET based applications.
- *.Wpf (.NET Core 3.1 and .NET Framework 4.6.1): Extended support for Windows Presentation Foundation (WPF).
System.Waf.Core
- Foundation
- Cache: Provides support for caching a value.
- Model: Base class that implements INotifyPropertyChanged.
- ObservableListViewCore: Provide change notifications for sorting and filtering.
- SynchronizingCollectionCore: 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.
 
- Applications
System.Waf.Wpf
- Foundation
- DataErrorInfoSupport: Helper class for working with the legacy IDataErrorInfo interface.
 
- Applications
- ApplicationInfo: Provides information about the running application.
- ObservableListView: Same as ObservableListViewCore but using weak event handlers.
- SynchronizingCollection: Same as SynchronizingCollectionCore but using weak event handlers.
- ViewModel: ViewModel base class which sets the DataContext delayed via 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: Null condition to 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
- AssertHelper: Assertion helper methods for expected exceptions, CanExecuteChanged event and PropertyChanged event.
- UnitTestSynchronizationContext: Synchronization context for unit tests that simulates the behavior of the WPF or Windows Forms synchronization context.
| Package | Usage | Successor of | 
|---|---|---|
| System.Waf.Wpf | For WPF applications | waf | 
| System.Waf.Core | For all .NET based applications | |
| System.Waf.UnitTesting.Wpf | For unit testing of WPF applications | waf.testing | 
| System.Waf.UnitTesting.Core | For unit testing of all .NET based applications | 
| Name | Type | Description | Links | 
|---|---|---|---|
| Waf NewsReader | Xamarin Forms | A simple and fast RSS and ATOM news feed reader. | |
| Waf Writer | WPF | A simplified word processing application. | Doc | 
| Waf Book Library | WPF | Supports the user to manage his books. Borrowed books can be tracked by this application. 
 | Doc | 
| Waf Information Manager | WPF | A modular application that comes with a fake email client and an address book. 
 | Doc | 
| Waf Music Manager | WPF | Fast application that makes fun to manage the local music collection. WinRT, Media playback, File queries & properties, Async/await, Drag & Drop, ClickOnce | |
| Waf DotNetPad | WPF | Code editor to program with C# or Visual Basic. .NET Compiler Platform, Roslyn, AvalonEdit, Auto completion, Async/await, ClickOnce | |
| Waf DotNetApiBrowser | WPF | Windows application for browsing the public API of .NET Assemblies and NuGet packages. .NET Compiler Platform, Roslyn, AvalonEdit, NuGet, Async/await, Validation, ClickOnce |