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; }