WPF DatePicker,显示今天的日期并绑定到属性

Posted

技术标签:

【中文标题】WPF DatePicker,显示今天的日期并绑定到属性【英文标题】:WPF DatePicker, display todays date with binding to property 【发布时间】:2014-06-19 06:05:48 【问题描述】:

这可能与 Set the Default Date of WPF Date Picker to Current Date 重复,但我已经尝试了问题中的代码,但它不起作用,希望我遗漏了一些简单的东西

好的,正如问题所述,我想在视图加载时显示当前日期,但是,我将 SelectedDate 属性绑定到我的属性,我认为您不能使用“文本”,因为我的属性我绑定到的是一个 DateTime 属性。是的,我可以在模型中进行转换,但 XAML(我认为)应该能够为我做到这一点。

好的,我知道问题出在哪里,日期是“01/01/0001”,因为它绑定到我的属性,默认为 01/01/0001,所以我想我需要做我的属性中的一些 C# 代码说如果它的 01/01/0001,使用 DateTime.Now,如果不是,使用属性。

XAML

    <DatePicker HorizontalAlignment="Left" 
                DisplayDate="x:Static System:DateTime.Now"
                SelectedDate="Binding AvailableFrom, Mode=TwoWay"
                Margin="139,58,0,0" 
                VerticalAlignment="Top" 
                Width="120"/> 

如果大代表认为它是重复的,我很乐意删除它,

我做了什么来解决...

     get
     

         if (m_AvailableFrom == DateTime.MinValue)
             return DateTime.Now;

        return m_AvailableFrom;
     

为帮助干杯

【问题讨论】:

答案,即使来自 OP,也请进入答案部分。请从问题中删除答案,然后将其作为答案发布。 【参考方案1】:

我个人只会将 DateTime.Now 分配给 ViewModel 代码中的 AvailableFrom 属性。

如果您想使用 XAML,一种选择是将 AvailableFrom 属性设置为 DateTime?(可为空的 DateTime)而不是 DateTime。那么默认值为 null 而不是“01/01/0001”。

然后,您可以在 XAML 中使用

xmlns:System="clr-namespace:System;assembly=mscorlib"

<DatePicker
    HorizontalAlignment="Left"
    SelectedDate="Binding
        Path=AvailableFrom,
        Mode=TwoWay,
        TargetNullValue=x:Static System:DateTime.Now"
    Margin="139,58,0,0" 
    VerticalAlignment="Top" 
    Width="120" />

只要AvailableFrom 为空,UI 就会显示当前日期。

【讨论】:

嗨 Josh,这就是我所做的,但是在模型中,我将通过上面的代码,干杯 Unknown build error, 'Key cannot be null. ... 我不知道这是什么意思... “WPF 不支持日期时间。” -- .net 核心 3.1【参考方案2】:

下面 SelectedDate 属性的 MSDN 链接将其显示为可为空。我认为与其返回 DateTime.Now,不如返回 null,如果它没有设置,我怀疑就像其他具有可为空字段的控件一样,它不会显示任何内容。

DatePicker.SelectedDate MSDN Link

【讨论】:

【参考方案3】:
<DatePicker HorizontalAlignment="Left"                 
        SelectedDate="Binding AvailableFrom, Mode=TwoWay"
        DisplayDate="Binding DateTime.Now"                
        Margin="139,58,0,0" 
        VerticalAlignment="Top" 
        Width="120"/>

*在 SelectedDate 之后使用 DisplayDate

如果有用请标记谢谢!

【讨论】:

以上是关于WPF DatePicker,显示今天的日期并绑定到属性的主要内容,如果未能解决你的问题,请参考以下文章

在 WPF 的 DatePicker 中显示当前日期

WPF DatePicker 仅显示可用日期

WPF DatePicker 显示时间和日期

DatePicker 显示默认日期 1/1/0001 - C# WPF

WPF DatePicker 显示 DateTime.Today 或绑定

将WPF DatePicker绑定到字符串属性[重复]