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

时间:2014-05-02 14:06:22

标签: c# wpf xaml datepicker

这是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;
     }

欢呼帮助

3 个答案:

答案 0 :(得分:28)

我个人只会将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就会显示当前日期。

答案 1 :(得分:2)

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

DatePicker.SelectedDate MSDN Link

答案 2 :(得分:-3)

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

*在SelectedDate

之后使用DisplayDate

标记是否有用,谢谢!