WPF DataGrid с ItemSource
как ObservableCollection
с ячейкой [Date], связанной со свойством DateTime Date
в каждом объекте коллекции. Свойство Date
по умолчанию уже имеет значение DateTime.Now
, поэтому значение уже находится в базовом свойстве:
public DateTime Date { get; set; } = DateTime.Now;
После щелчка в ячейке появляется значение [Date] и DatePicker правильно подсвечивает текущую дату. .
Но я хочу, чтобы новая строка в DataGrid автоматически отображала текущую дату по умолчанию, чтобы пользователю даже не приходилось касаться поля при принятии текущей даты по умолчанию. Как видно на рисунке и XAML, я успешно использую FallBackValue='N'
для [Cl] и FallBackValue='$0.00'
для [Amount]. Тем не менее, я попытался FallbackValue={x:Static sys:DateTime.Now}
для [Дата], но он остается пустым.
...
xmlns:sys="clr-namespace:System;assembly=mscorlib"
...
<DataGrid Visibility="{Binding BankDataGridVisibility}" ItemsSource="{Binding BankTransactions}" AutoGenerateColumns="False" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Margin="10,50,10,10" RowHeaderWidth ="0" >
<DataGrid.Columns>
...
<DataGridTemplateColumn Header="Date" Width="100" >
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Date, FallbackValue={x:Static sys:DateTime.Now}, StringFormat=\{0:MM/dd/yyyy\}}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<DatePicker SelectedDate="{Binding Date}" />
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>
...
</DataGrid.Columns>