In the first half of 2017 we implemented a WPF project for one of our customers. The aim of the project was to develop a Surface Pro compatible desktop application for data collection in context of civil engineering. The application allows the user to create, save, edit and export protocols of specific buildings. Furthermore it’s possible to create a PDF document out of the protocol data.

Because most of the workstations at our customer are still on Windows 7 and UWP is not compatible with Windows 7 we decided to use WPF instead of UWP to implement that desktop application. Additionally most of our self developed libraries that provide utility functionalities are not yet compatible/usable with UWP.

After finishing the project I decided to start a blog post series about WPF. In this series I’ll address a few important topics I covered during development. Below you find an overview about the topics treated in this series. The idea behind writing this series is to provide solutions for problems and challenges we had to solve throughout this project. At the same time the series will act as a knowledge base for ourselves.

Overview about the topics

  1. Project Setup
  2. WPF Application Design
  3. MVVM Pattern
  4. MahApps.Metro and MahApps.Metro.Resources
  5. Binding ComboBox or ListBox to Enum
  6. Globalization of Enums
  7. ViewModel Validation using DataAnnotations
  8. CustomDataGrid
  9. CustomListBox
  10. InkCanvas with initial StrokeCollection
  11. Custom MetroDialog
  12. Global Exception Logging
  13. Advanced Installer


  1. Thank you very much for that tutorial.
    Do you have a tutorial – how to convert that WPF app into UWP?

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.