WPF Series -13- Advanced Installer

The last post in this series deals with the packaging of a WPF application. To simplify the installation of our WPF application we decided to package the application as MSI (Microsoft Installer) using Advanced Installer. In the following I show you the most important steps in using Advanced Installer. Prerequisites Download Advanced Installer Install Visual […]

WPF Series -12- Global Exception Logging

During development and debugging of our WPF application some exceptions occurred which were not caught by the code. Such unhandled exceptions are not logged automatically. In order to obtain information about any unhandled exceptions in production and to simplify error analysis, we looked for a way to handle and log unhandled exceptions. After some research […]

WPF Series -11- Custom MetroDialog

After a long break it’s finally time to continue with the WPF series. Today I’ll show you how we implemented a custom metro dialog. Our dialog contains 2 comboboxes and gets displayed during data export to determine the accuracy of the data to be exported. Let’s have a look at the code. AccuracySelectionDialog.xaml First we […]

WPF Series -10- InkCanvas with initial StrokeCollection

One of the requirements our WPF project had to meet describes the ability to create a sketch of the sewage shaft for which data is collected. The functional acceptance criteria are the following. There has to be an area on the form to create a sketch of the sewage shaft using Surface Pen, touchscreen or […]

WPF Series -9- CustomListBox

When we used ListBox controls in our WPF project we faced the same problem as described in the previous post. Like DataGrid, ListBox control also has a property called SelectedItems, which isn’t a dependency property and therefore not bindable too. This post shows how ListBox control can be extended with a bindable version of the […]

WPF Series -8- CustomDataGrid

According to MVVM pattern the ViewModel interacts with the Model but doesn’t know anything about its View. As a result dependency properties of controls get bound to ViewModel properties by specifying bindings in the corresponding View (XAML). DataGrid control has a property called SelectedItems, which in multi selection mode holds the items that are selected. […]

WPF Series -7- ViewModel Validation using DataAnnotations

As we often use Data Annotations for basic validation purposes in context of C#/.NET applications (i.e. required, max length, …), we searched for a solution that allows using Data Annotations in WPF ViewModels for client side validation. Fortunately we found such a solution, which I would like to describe in this blog post. Implement IDataErrorInfo […]

WPF Series -6- Globalization of Enums

In the previous blog post of this series I wrote about binding ComboBox or ListBox to an enum. Using just the approach described there exposes the enum values directly in the corresponding ComboBox or ListBox. Because the enum values do not always have descriptive names or because they are language specific, it’s usually more appropriate […]

WPF Series -5- Binding ComboBox or ListBox to Enum

In our WPF application we wanted to bind ComboBox and ListBox controls to enums. The WPF way to set up such a binding is described here. This solution works absolutely fine but it requires the definition of an ObjectDataProvider for every enum. This in turn leads to lower maintainability and the code is not reusable. […]

WPF Series -4- MahApps.Metro and MahApps.Metro.Resources

To have a modern look and feel we decided to align our WPF application to Microsoft Metro style. To achieve this, we used the open source toolkit MahApps.Metro. MahApps.Metro is a toolkit for creating Metro / Modern UI styled WPF applications. The MahApps.Metro project was started back in 2011 by Paul Jenkins. The source is […]