waf

by jbe2277

jbe2277 / waf

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

489 Stars 104 Forks Last release: 30 days ago (v6.2.0) MIT License 836 Commits 33 Releases

Available items

No Items, yet!

The developer of this repository has not created any items for sale yet. Need a bug fixed? Help with integration? A different license? Create a request here:

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 in WPF and UWP. It supports you in applying various architectural patterns: * Layered Architecture * Modular Architecture * Model-View-ViewModel pattern

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.

Supported Platforms

  • **.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).

NuGet Packages

Package

Usage Successor of
System.Waf.Core For all .NET based applications
System.Waf.Wpf For WPF applications waf
System.Waf.UnitTesting.Core For unit testing of all .NET based applications
System.Waf.UnitTesting.Wpf For unit testing of WPF applications waf.testing

Features

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 -
(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.

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.

Sample Applications

Name

Type Description Links
Waf NewsReader Xamarin
Forms
A simple and fast RSS and ATOM news feed reader.

  • Platforms: Android, UWP (Windows) and iOS
  • Architecture: Layering, MVVM, Async patterns
  • Sync feeds with multiple devices via MS Graph (OneDrive)
  • OAuth authentication
  • Responsive UI with Navigation pane
  • Validation (Add feed view)
  • Localized (English and German)
  • | Waf Writer | WPF | A simplified word processing application.
    • Platforms: .NET Core 3.1 and .NET Framework 4.7.2
    • Architecture: Layering, MVVM
    • Ribbon & Tabbed MDI (Multiple Document Interface)
    • Animated transition between pages
    • Most recently used file list (MRU)
    • Message service, Open/Save dialog service
    • Print preview & Print dialog
    • Localized (English and German)
    | Doc Waf Book Library | WPF | Supports the user to manage his books. Borrowed books can be tracked by this application.
    • Platforms: .NET Core 3.1 and .NET Framework 4.7.2
    • Architecture: Layering, Extensions, MVVM, DMVVM
    • Entity Framework with SQLite
    • Validation rules
    • Sort & Filter in the DataGrid
    • Reporting via WPF FlowDocument & Print support
    | Doc Waf Information Manager | WPF | A modular application that comes with a fake email client and an address book.
    • Platforms: .NET Core 3.1 and .NET Framework 4.7.2
    • Architecture: Layering, Modularization, MVVM
    • Office format ZIP container shared with all modules (Package API and DataContractSerializer)
    • Validation rules
    • Extensible navigation view & context sensitive toolbar
    • Wizard dialog
    | 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 |

    We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.