Ваш код выглядит хорошо, как есть, но, вероятно, его можно упростить, используя DateTime.ToLocalTime
if (e.Value is DateTime)
{
e.Value = ((DateTime) e.Value).ToLocalTime();
}
Если вы используете C# 7.0 или новее, вы можете сделать это даже чище, используя сопоставление с образцом .
if (e.Value is DateTime dt)
{
e.Value = dt.ToLocalTime();
}
Заранее использовать SpecifyKind
необязательно, если только по какой-то причине значение уже не имеет DateTimeKind.Local
неправильно присвоено его .Kind
свойству. Если это произойдет, я бы посоветовал исправить это, где бы он ни создавался, а не в пользовательском интерфейсе.