This is 'my' canonical example for a WPF solution based on an MMVM approach using IoC, logging, and asynchronous invocations. All external
Thrid party libraries are resolved using NuGet.
The idea is to prevent me from re-creating the scaffolding\infrastructure for any future WPF apps, the following are included:
MVVM - implmented as ViewModel first approach using strongly typed XAML DataTemplates,
IoC - implmented using Autofac, all services and key (major) ViewModels are resolved via the IoC container,
Logging - implemented using NLog, writes to file currently in the 'C:\temp' directory,
Async Support - implemented using Reactive Extensions,
Heartbeat - produces a regular heart beat for the application (currently writes to the log),
Idling - a service producing notifications when the dispatcher enters idle state,
Diagnostics - a service exposing the FPS, CPU and memory (managed & unmanaged) consumptions,
Duration - a service for measuring the time for a block of code (Debug mode only),
Gestures - a service for changing the system gestures (mouse) during the application, designed to be used with MVVM,