WPF:将DataGrid FallBackValue设置为今天的日期

时间:2020-01-28 00:04:51

标签: c# wpf xaml datagrid

具有ItemSource作为ObservableCollection的WPF DataGrid,其[日期]单元格绑定到集合的每个对象中的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>

0 个答案:

没有答案