【问题标题】:How do I get a datepicker to default to "Pick a Date"?如何让日期选择器默认为“选择日期”?
【发布时间】:2016-02-10 21:51:09
【问题描述】:

我有几个 DatePickers,其中许多默认情况下没有日期。当给定 DatePicker 有数据时,我希望它显示日期,但如果没有,我希望它在该日期的数据为空时显示默认的“选择日期”文本。

在我为 DatePicker 创建 DataBinding 之前,它会在我的所有 DatePicker 上显示此文本,但在我创建 DataBinding 之后,它是一个 DateTime 值,它不能是 null 值。是否有不同的数据类型可以接受 DatePicker 将接受的空值,或者是否有更好的方法让 DatePicker 显示“选择日期”?

我对编程有点陌生,所以如果我没有说清楚或包含一些必需的信息,请原谅。我可以提供任何需要的东西。随便问问。

【问题讨论】:

    标签: c# wpf date data-binding datepicker


    【解决方案1】:

    DatePickerSelectedDate 属性是DateTime? 类型,所以它是nullable

    如果你的视图模型中有这个:

    public DateTime DateTimeInVm { get; set; }
    

    在你看来:

    <DatePicker SelectedDate="{Binding DateTimeInVm}"></DatePicker>
    

    那么是的,输出将是:

    因为你说DateTimestruct所以它不能是null,会被初始化为DateTime.MinValue

    但是如果你在视图模型中有这个:

    public DateTime? DateTimeInVm { get; set; }
    

    结果将是:

    因此,请尝试将您要绑定的属性更改为可为空的DateTime

    【讨论】:

    • 绑定日期选择器与使用 Name 属性相比有优势吗?
    • 是的,假设您有一个具有FromSelectedDateToSelectedDate 属性的视图模型以及绑定到这些属性的视图中有两个DatePickers。如果在 UI 中更改起始日期和结束日期时使用绑定(通过单击 DatePicker),这些属性将自动更新。如果您不绑定它们,那么您必须附加一个事件处理程序来检查 SelectedDate 是否已更改,然后在代码隐藏中更新适当的值。另外,如果你想遵循 MVVM 模式,你不能没有绑定:) 这基本上是 WPF 的卖点。
    • 坦克很多。因此,如果我像您的示例中那样将我的 DatePicker 绑定到 DateTimeInVm,它将允许我直接使用它而不使用 DatePicker 的 SelectedDate 属性。我只看到这个区别?
    • 是的,基本上你必须绑定到一个可以为空的DateTime。因此,您要绑定的属性必须具有 DateTime?Nullable&lt;DateTime&gt; 类型(它们是相同的)。因为default(DateTime?)null,所以Select a date 文本将显示在DatePicker 中以防“空日期”。
    • 我不知道 Nullable 或 DateTime?类型。添加一个 ?在任何结构的末尾使其可以为空?
    【解决方案2】:

    你真的需要绑定你的 DatePicker 吗?因为你可以简单地给它一个名字,你就可以给它空值(选择一个日期)或设置日期:

    AXML:

    <DatePicker Name="MyDatePicker"/>
    

    C#

    MyDatePicker.SelectedDate = null; // will show "Select a date" 
    MyDatePicker.SelectedDate = DateTime.Today; //will show today's date
    

    【讨论】:

    • 我绑定它,以便它显示存储在数据文件中的 DateTime(在我的例子中是一个在启动时加载的 xml 文件)。如果 xml 文件中的特定字段为空白,那么我希望 DatePicker 显示“选择日期”;如果不是,我希望它填充 DateTime 数据。
    • 你的问题解决了吗? Szabolcs Dézsi 方法应该可以工作
    猜你喜欢
    • 2021-03-14
    • 2011-10-02
    • 1970-01-01
    • 2011-04-19
    • 2013-08-22
    • 1970-01-01
    • 2013-12-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多