IValueConverter in WPF (C#)

IValueConverter in WPF (C#)
10/2026
Noel Hödtke | Solution Engineer

TL;DR

Der IValueConverter ist eine zentrale Schnittstelle in WPF, um Daten zwischen ViewModel und View gezielt zu transformieren. Er liegt zwischen Binding-Source und Binding-Target und unterstützt beide Richtungen: Convert (Source → Target) und ConvertBack (Target → Source). So lassen sich Werte für die Darstellung im Frontend aufbereiten, ohne das ViewModel anzupassen.

Am Beispiel einer Monatsansicht zeigt der Beitrag, wie zwei Converter die Darstellung steuern: Der BoldIfCurrentMonthConverter hebt Tage des aktuellen Monats durch fette Schrift hervor, der GreyOutIfNotCurrentConverter graut Tage außerhalb des Monats aus. Zu beachten ist, dass übergebene Werte auch null sein können. Eingebunden werden die Converter über die XAML-Ressourcen.

Einleitung

Ein häufiges Problem in der Softwareentwicklung besteht darin, dass Daten aus dem Backend nicht in der Form vorliegen, in der sie im Frontend angezeigt oder dargestellt werden sollen. In WPF lässt sich beispielsweise ein Wert im ViewModel manchmal nicht so darstellen, wie er vorliegt. Mithilfe des IValueConverters lässt sich eine Converter-Klasse erstellen, die die Werte entsprechend übersetzt.

Was macht der IValueConverter?

Der IValueConverter ist eine Standard-Schnittstelle in WPF für Value-Transformationen in Bindings. Der Converter liegt zwischen Binding-Source und Binding-Target und unterstützt zwei Richtungen:

  • Source → Target (Convert)
  • Target → Source (ConvertBack)

Dabei ist zu beachten, dass der Wert, der an den Converter übergeben wird, auch null sein kann.

IValueConverter in einer einfachen Monatsansicht

Dieser Abschnitt veranschaulicht den Einsatz des IValueConverters in einer Monatsansicht. In der Monatsansicht sind die Tage, die zum ausgewählten Monat gehören, fett dargestellt, während die Tage, die nicht im Monat liegen, ausgegraut sind.

IValueConverter Monatsansicht kalender

‍

BoldIfCurrentMonthConverter

Der BoldIfCurrentMonthConverter stellt die Schrift fett dar. Er implementiert den IValueConverter und gibt ein FontWeight zurück.

1public class BoldIfCurrentMonthConverter : IValueConverter
2{
3    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
4    {
5        bool isInMonth = value is bool b && b;
6        return isInMonth ? FontWeights.Bold : FontWeights.Normal;
7    }
8
9public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) => throw new NotImplementedException();
10}

‍

GreyOutIfNotCurrentConverter

Der GreyOutIfNotCurrentConverter sorgt dafür, dass Tage, die nicht im Monat liegen, ausgegraut werden. Er gibt einen Brush (eine Farbe) zurück.

1public class GrayOutIfNotCurrentConverter : IValueConverter
2{
3    public Brush InMonthBrush { get; set; } = Brushes.Black;
4    public Brush OutMonthBrush { get; set; } = Brushes.Gray;
5
6    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
7    {
8        bool isInMonth = value is bool b && b;
9        return isInMonth ? InMonthBrush : OutMonthBrush;
10    }
11
12    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 
13     => throw new NotImplementedException();
14}

‍

Implementierung im XAML

Die Converter müssen in den Ressourcen angegeben werden.

1<UserControl.Resources>
2    <viewModel:SimpleMonthViewModel x:Key="SimpleMonthViewModel" />
3    <converters:BoldIfCurrentMonthConverter x:Key="BoldIfCurrentMonthConverter"/>
4    <converters:GrayOutIfNotCurrentConverter x:Key="GrayOutIfNotCurrentConverter"/>
5</UserControl.Resources>

‍

Anschließend lassen sie sich an der entsprechenden Stelle einbinden.

1<TextBlock Text="{Binding Datum, StringFormat={}{0:dd}}" 
2           HorizontalAlignment="Center"
3           VerticalAlignment="Center"                                   
4           FontWeight="{Binding IsInCurrentMonth, Converter={StaticResource BoldIfCurrentMonthConverter}}"
5           Foreground="{Binding IsInCurrentMonth, Converter={StaticResource GrayOutIfNotCurrentConverter}}"/>

‍

Fazit

Der IValueConverter ist vielseitig einsetzbar und eine große Hilfe, wenn es um speziellere Darstellungen in WPF geht oder Werte umgewandelt werden müssen.

Noel Hödtke | Solution Engineer
Noel Hödtke | Solution Engineer

Developer Training

Diese Beiträge entstehen aus der täglichen Arbeit unserer Entwicklerinnen und Entwickler. Devware gibt dieses Wissen auf Anfrage auch als Schulung weiter, zu .NET, Blazor und anderen Sprachen.
Pfeil-Icon – Mehr erfahren

Mehr zum Thema

Pfeil nach rechts (Verlinkung)
Behaviors in WPF
10/2026

Behaviors in WPF

Blauer Pfeil nach rechts (Verlinkung)
Angular: Webcam ansteuern
09/2026

Angular: Webcam ansteuern

Blauer Pfeil nach rechts (Verlinkung)
Unittests in C#
09/2026

Unittests in C#

Blauer Pfeil nach rechts (Verlinkung)
Angular: Webcam ansteuern
09/2026

Angular: Webcam ansteuern

Blauer Pfeil nach rechts (Verlinkung)