Что касается меня, изменение среды для изменения формата DatePicker (например, Thread.CurrentCulture) не является хорошей идеей. Конечно, вы можете создать Control, полученный из DatePicker, и реализовать свойство зависимостей, например Format, но это требует слишком больших усилий. Простое и элегантное решение, которое я нашел, является обязательным значением не для самого SelectedDate, а для некоторого неиспользуемого свойства (для этого я использовал свойство ToolTip) и обновил это свойство, когда SelectedDate был изменен. осуществление # C для односторонними связующими выглядит следующим образом:
DatePicker datePicker = new DatePicker();
datePicker.SetBinding(ToolTipProperty, "Date");
datePicker.SelectedDateChanged += (s, ea) =>
{
DateTime? date = datePicker.SelectedDate;
string value = date != null ? date.Value.ToString("yyyy-MM-dd") : null;
datePicker.ToolTip = value;
};
XAML + C# должен выглядеть следующим образом:
XAML:
<DatePicker ToolTip="{Binding Date Mode=TwoWay}"
SelectedDateChanged="DatePicker_SelectedDateChanged"/>
C#:
private void DatePicker_SelectedDateChanged(object sender, EventArgs ea)
{
DatePicker datePicker = (DatePicker)sender;
DateTime? date = datePicker.SelectedDate;
string value = date != null ? date.Value.ToString("yyyy-MM-dd") : null;
datePicker.ToolTip = value;
}
Для двусторонней реализации обработать событие ToolTipChanged таким же образом, чтобы обновить SelectedDate.
</Setter>
</Style>
</DatePicker.Resources>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>