Как отобразить пустое значение по умолчанию в поле выбора даты wpf? - PullRequest
0 голосов
/ 03 октября 2018

В моем примере я хочу отобразить значение по умолчанию, например, «...», в средстве выбора даты в WPF.

Я использовал запасное значение, но оно будет отображаться только как значение даты и времени.Но мне нужно пустое значение, так как я могу этого достичь?

1 Ответ

0 голосов
/ 03 октября 2018

В WPF DatePicker по умолчанию текст "Select a date" является водяным знаком, который прикрепляется как дочерний элемент управления DatePicker.Если вы хотите отобразить текст по умолчанию, например, «...», вы должны найти ContentControl 'PART_Watermark', который является дочерним для DataPicker, и изменить его содержимое.

Вы можете сослаться на код Мэтта Гамильтона по указанной ссылке:

http://matthamilton.net/datepicker-watermark

Если вы хотите сделать это программно, нажмитекакой-то кнопки, затем проверьте код ниже: -

    void ChangeDatePickerWaterMark()
    {
        var dp = datePicker as DatePicker; //datePicker is your control name
        if (dp == null) return;

        var tb = GetChildOfType<DatePickerTextBox>(dp);
        if (tb == null) return;

        var wm = tb.Template.FindName("PART_Watermark", tb) as ContentControl;
        if (wm == null) return;

        wm.Content = "...";
    }

    public static T GetChildOfType<T>(DependencyObject depObj) where T : DependencyObject
    {
        if (depObj == null) return null;

        for (int i = 0; i < VisualTreeHelper.GetChildrenCount(depObj); i++)
        {
            var child = VisualTreeHelper.GetChild(depObj, i);

            var result = (child as T) ?? GetChildOfType<T>(child);
            if (result != null) return result;
        }
        return null;
    }

    private void Button_Click(object sender, RoutedEventArgs e)
    {
        ChangeDatePickerWaterMark();
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...