【问题标题】:Allow user to clear date from DatePicker允许用户从 DatePicker 清除日期
【发布时间】:2023-03-17 17:24:01
【问题描述】:

我有一个 DataGridTemplateColumn(以编程方式创建),其中一个 TextBlock 用于 CellTemplate,一个 DatePicker 用于 CellEditingTemplate。

DatePicker 的值绑定到 DateTime?。

如果加载网格时单元格有日期,尝试清除日期会导致验证问题——空值不会发送到绑定属性。 DatePicker 上是否有允许空值的设置(我找不到)?
是否需要转换器来处理可为空的绑定属性?

感谢您的任何见解--

【问题讨论】:

    标签: wpf datepicker datagridtemplatecolumn


    【解决方案1】:

    我遇到了同样的问题,但它是一个用于输入产品数量的文本框。它有一个整数作为绑定属性。它曾经在输入一些数量的情况下正确运行。但是当输入某个值后文本框为空时,该属性将先前输入的值作为其当前值。

    我通过将字符串类型属性作为绑定属性解决了这个问题。

    你也可以这样做。用 DatePicker 绑定一个字符串类型的属性。当使用 DatePicker 选择日期时,您始终可以确定日期格式。您还可以在应用样式中将 DatePickerTextBox 设为只读,以不允许用户通过键入来输入任何日期。

    这样,当您清除 DatePicker 时,底层绑定属性将包含 null 或空字符串,我认为这就是您想要的。

    您可以在

    中使用该字符串属性

    DateTime.Parse 方法获取等效的 DateTime 对象。尝试在 try catch 块中解析日期以处理空/空字符串情况。

    【讨论】:

    • 感谢您的回复。深入研究代码,我发现其中涉及一个转换器。我在 ConvertBack() 中解决了这个问题:返回 null 而不是 string.Empty
    • 太棒了。很高兴知道您能够自己解决。您没有提到您的代码中已经有转换器设置。
    猜你喜欢
    • 1970-01-01
    • 2020-12-20
    • 2021-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多