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 @@ - + - +