首页 > 解决方案 > WPF:将 DataGrid FallBackValue 设置为今天的日期

问题描述

WPF DataGridItemSourceObservableCollection[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}了 [Date] 但它仍然是空的。

新行中的空日期值

编辑时出现属性值

...
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>

标签: c#wpfxamldatagrid

解决方案


推荐阅读