diff --git a/LehrerApp.Desktop/Converters/DateTimeOffsetToDateTimeConverter.cs b/LehrerApp.Desktop/Converters/DateTimeOffsetToDateTimeConverter.cs
new file mode 100644
index 0000000..8d546a2
--- /dev/null
+++ b/LehrerApp.Desktop/Converters/DateTimeOffsetToDateTimeConverter.cs
@@ -0,0 +1,22 @@
+using System;
+using System.Globalization;
+using Avalonia.Data.Converters;
+
+namespace LehrerApp.Desktop.Converters;
+
+/// `CalendarDatePicker.SelectedDate` ist (anders als der eingebaute `DatePicker`) vom
+/// WPF-Toolkit übernommenes `DateTime?`, während Datumsfelder in dieser Codebasis durchgängig
+/// `DateTimeOffset`(?) sind. Avalonia bietet dafür keine automatische Konvertierung
+/// (`TypeUtilities.TryConvert`/`TryConvertImplicit` unterstützen `DateTime`↔`DateTimeOffset`
+/// nicht) — ohne diesen Converter bleibt die Bindung beim Anzeigen stumm leer und wirft beim
+/// Zurückschreiben eine `InvalidCastException`.
+public sealed class DateTimeOffsetToDateTimeConverter : IValueConverter
+{
+ public static readonly DateTimeOffsetToDateTimeConverter Instance = new();
+
+ public object? Convert(object? value, Type targetType, object? parameter, CultureInfo culture) =>
+ value is DateTimeOffset offset ? offset.DateTime : null;
+
+ public object? ConvertBack(object? value, Type targetType, object? parameter, CultureInfo culture) =>
+ value is DateTime dateTime ? new DateTimeOffset(DateTime.SpecifyKind(dateTime, DateTimeKind.Local)) : null;
+}
diff --git a/LehrerApp.Desktop/Views/ClassTeacher/ClassTeacherAbsencesView.axaml b/LehrerApp.Desktop/Views/ClassTeacher/ClassTeacherAbsencesView.axaml
index 2271a53..3e1badf 100644
--- a/LehrerApp.Desktop/Views/ClassTeacher/ClassTeacherAbsencesView.axaml
+++ b/LehrerApp.Desktop/Views/ClassTeacher/ClassTeacherAbsencesView.axaml
@@ -1,6 +1,7 @@
@@ -45,9 +46,9 @@
-
+
-
+
diff --git a/LehrerApp.Desktop/Views/ClassTeacher/ClassTeacherRegisterView.axaml b/LehrerApp.Desktop/Views/ClassTeacher/ClassTeacherRegisterView.axaml
index aa82eea..eaaeaf5 100644
--- a/LehrerApp.Desktop/Views/ClassTeacher/ClassTeacherRegisterView.axaml
+++ b/LehrerApp.Desktop/Views/ClassTeacher/ClassTeacherRegisterView.axaml
@@ -2,6 +2,7 @@
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:vm="clr-namespace:LehrerApp.Desktop.ViewModels.ClassTeacher"
xmlns:svm="clr-namespace:LehrerApp.Desktop.ViewModels.Students"
+ xmlns:conv="clr-namespace:LehrerApp.Desktop.Converters"
x:Class="LehrerApp.Desktop.Views.ClassTeacher.ClassTeacherRegisterView"
x:DataType="vm:ClassTeacherDetailsViewModel">
@@ -104,9 +105,9 @@
-
+
-
+
diff --git a/LehrerApp.Desktop/Views/Groups/WebUntisLessonAbsenceComparisonDialog.axaml b/LehrerApp.Desktop/Views/Groups/WebUntisLessonAbsenceComparisonDialog.axaml
index 43ac676..a37ff06 100644
--- a/LehrerApp.Desktop/Views/Groups/WebUntisLessonAbsenceComparisonDialog.axaml
+++ b/LehrerApp.Desktop/Views/Groups/WebUntisLessonAbsenceComparisonDialog.axaml
@@ -1,6 +1,7 @@
-
+
-
+
diff --git a/LehrerApp.Desktop/Views/Groups/WithdrawStudentDialog.axaml b/LehrerApp.Desktop/Views/Groups/WithdrawStudentDialog.axaml
index 1ac8abe..923cd26 100644
--- a/LehrerApp.Desktop/Views/Groups/WithdrawStudentDialog.axaml
+++ b/LehrerApp.Desktop/Views/Groups/WithdrawStudentDialog.axaml
@@ -1,6 +1,7 @@
-
diff --git a/LehrerApp.Desktop/Views/Planning/WebUntisTimetableImportDialog.axaml b/LehrerApp.Desktop/Views/Planning/WebUntisTimetableImportDialog.axaml
index 42f5988..7a17452 100644
--- a/LehrerApp.Desktop/Views/Planning/WebUntisTimetableImportDialog.axaml
+++ b/LehrerApp.Desktop/Views/Planning/WebUntisTimetableImportDialog.axaml
@@ -2,6 +2,7 @@
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:vm="clr-namespace:LehrerApp.Desktop.ViewModels.Planning"
xmlns:svc="clr-namespace:LehrerApp.Desktop.Services"
+ xmlns:conv="clr-namespace:LehrerApp.Desktop.Converters"
x:Class="LehrerApp.Desktop.Views.Planning.WebUntisTimetableImportDialog"
x:DataType="vm:WebUntisTimetableImportViewModel"
Title="Stundenplan aus WebUntis" Width="820" Height="650"
@@ -18,7 +19,7 @@
-
+
diff --git a/LehrerApp.Desktop/Views/Students/CreateLetterDialog.axaml b/LehrerApp.Desktop/Views/Students/CreateLetterDialog.axaml
index ca90bfe..78bcab4 100644
--- a/LehrerApp.Desktop/Views/Students/CreateLetterDialog.axaml
+++ b/LehrerApp.Desktop/Views/Students/CreateLetterDialog.axaml
@@ -1,6 +1,7 @@
-
+
diff --git a/LehrerApp.Desktop/Views/Students/WebUntisDocumentationComparisonDialog.axaml b/LehrerApp.Desktop/Views/Students/WebUntisDocumentationComparisonDialog.axaml
index 8078996..0ae831c 100644
--- a/LehrerApp.Desktop/Views/Students/WebUntisDocumentationComparisonDialog.axaml
+++ b/LehrerApp.Desktop/Views/Students/WebUntisDocumentationComparisonDialog.axaml
@@ -1,6 +1,7 @@
-
+
-
+
diff --git a/TODO.md b/TODO.md
index e092169..855ebfb 100644
--- a/TODO.md
+++ b/TODO.md
@@ -1406,15 +1406,23 @@ Bestätigungsschritt zu verlangen. Betroffen: [WebUntisLessonAbsenceComparisonDi
und [WebUntisDocumentationComparisonDialog.axaml](LehrerApp.Desktop/Views/Students/WebUntisDocumentationComparisonDialog.axaml).
**Nachtrag (September 2026, Nutzer-Feedback) — `CalendarDatePicker` blieb nach der Umstellung leer
-und warf beim Auswählen einen Konvertierungsfehler:** `CalendarDatePicker.SelectedDate` ist
-`DateTimeOffset?`, die fünf oben umgestellten ViewModel-Eigenschaften (`StartDate`/`EndDate` in
-`ClassTeacherDetailsViewModel`, `WebUntisLessonAbsenceComparisonViewModel`,
-`WebUntisDocumentationComparisonViewModel`, `WeekDate` in `WebUntisTimetableImportViewModel`)
-waren aber als nicht-nullbares `DateTimeOffset` deklariert — anders als `WithdrawStudentDialog`
-und `CreateLetterDialog`, deren Datumsfelder von Anfang an `DateTimeOffset?` sind. Der alte
-`DatePicker` toleriert diese Abweichung stillschweigend, `CalendarDatePicker`s Bindung nicht. Alle
-fünf Eigenschaften auf `DateTimeOffset?` umgestellt (Fallback `?? DateTimeOffset.Now` an den
-wenigen Leseseiten), damit sie exakt zum Steuerelement passen.
+und warf beim Auswählen eine `InvalidCastException`:** Der erste Erklärungsversuch (Nullability der
+ViewModel-Eigenschaften) war falsch und hat das Problem nicht behoben. Per Reflection gegen die
+tatsächliche Avalonia-12.0.4-DLL verifiziert: `CalendarDatePicker.SelectedDate` (und
+`DisplayDateStart`/`DisplayDateEnd`) sind — vom WPF-Toolkit-Ursprung dieses Controls geerbt —
+`DateTime?`, nicht `DateTimeOffset?` wie beim eingebauten `DatePicker`. Avalonias
+`TypeUtilities.TryConvert`/`TryConvertImplicit` unterstützen keine automatische Konvertierung
+zwischen `DateTime` und `DateTimeOffset` (in keiner Richtung, nullbar oder nicht) — mit einem
+`DateTimeOffset`-Feld direkt gebunden bleibt `CalendarDatePicker` beim Anzeigen stumm leer und
+wirft beim Zurückschreiben (Klick auf einen Kalendertag) eine `InvalidCastException`. Das betraf
+nicht nur die fünf oben umgestellten Zeitraum-Felder, sondern genauso die bereits bestehenden
+`CalendarDatePicker`-Bindungen in `WithdrawStudentDialog` (`SelectedDate`, `DisplayDateStart`) und
+`CreateLetterDialog` (`LetterDate`) — nur bislang unbemerkt, weil dort niemand konsequent ein Datum
+ausgewählt hatte. Behoben mit einem neuen [DateTimeOffsetToDateTimeConverter](LehrerApp.Desktop/Converters/DateTimeOffsetToDateTimeConverter.cs),
+an allen elf betroffenen Bindings in den sieben Dialogen/Views eingehängt (`Converter={x:Static
+conv:DateTimeOffsetToDateTimeConverter.Instance}`). End-to-End mit einer echten kompilierten
+Ansicht in einer Avalonia.Headless-Instanz gegengeprüft (Anzeige des Anfangswerts und
+Zurückschreiben nach Kalenderauswahl, beides ohne Exception).
**Nachtrag zu 4.3, Fehlzeiten je Unterricht (August 2026):** Der ursprüngliche Fehlzeitenabgleich
rief `getTimetableWithAbsences` ohne Element auf und bekam damit den kompletten Lehrer-Stundenplan