WPF: установка DataGrid FallBackValue на сегодняшнюю дату - PullRequest
0 голосов
/ 28 января 2020

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} для [Дата], но он остается пустым.

Empty date value in new row

Property value appears when editing

...
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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...