【问题标题】:Why Text property of a DatePicker still contains value?为什么 DatePicker 的 Text 属性仍然包含值?
【发布时间】:2018-01-22 08:55:54
【问题描述】:

我正在构建一个 WPF/C# 应用程序,并且我有几个 DatePicker-s,我使用此构造引用它们:

for(int i = 0; i < n; i += 1)
{
    DatePicker dp = (DatePicker)this.FindName(Constants.DP_PRODUCT_PREFIX + (i + 1));
    dp.SelectedDate = new DateTime(2017, 12, 31);
    dp.IsEnabled = true;
    dp.Opacity = 1;
    dp.Text = "";
 }

但是即使我设置了

dp.Text = "",

DatePickers 仍显示其文本字段为 2017 年 12 月 31 日。

注意:我希望将 DatePicker 设置为我选择的默认值,在本例中为 31.12.2017

我做错了什么?也许是我运行这段代码的时候,它没有应用更改?

【问题讨论】:

  • SelectedDate 设置为null : dp.SelectedDate = null;
  • 是的,我知道这是最简单的答案。
  • 您可以通过将“Tag”属性设置为“true”或“false”来制作“不太好”的解决方案,无论您是否要显示选定的日期。然后为“DatePicker”创建样式并更改文本的“可见性”。
  • 您希望用户选择日期吗?但是您想要您提供的默认选择日期?或者您只是不想让用户选择日期?日期应该是你提供的?
  • @SyedMunisAli 我希望我的 DatePicker 设置为选定的日期,但文本字段应该为空。

标签: c# wpf datepicker


【解决方案1】:

您可以在 DatePicker 模板中找到 DatePickerTextBox(显示 SelectedDate 值)以分配新值。模板中 DatePickerTextBox 的默认名称是“PART_TextBox”,因此您可以像这样从模板中找到它

dp.Loaded += (ee, ss) =>
        {
            var template = dp.Template;
            var t = template.FindName("PART_TextBox", dp) as DatePickerTextBox;
            if (t != null)
                t.Text = "";
        };

将代码放入Loaded事件中,确保DatePickerTextBox不为空。您也可以通过右键单击控件然后选择编辑样式来查看DatePicker模板。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-13
    • 1970-01-01
    • 2018-03-21
    • 2017-05-05
    • 2015-12-31
    • 2019-06-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多