コード例 #1
0
        private static void DatePickerOnCalendarOpened(object sender, RoutedEventArgs e)
        {
            var datePicker = (DatePicker)sender;
            var textBox    = GetTemplateTextBox(datePicker);
            var formatStr  = GetDateFormat(datePicker);

            textBox.Text = DatePickerDateTimeConverter.DateTimeToString(formatStr, datePicker.SelectedDate);
        }
コード例 #2
0
        private static void textBox_LostKeyboardFocus(object sender, KeyboardFocusChangedEventArgs e)
        {
            e.Handled = true;

            var textBox    = (TextBox)sender;
            var datePicker = (DatePicker)textBox.TemplatedParent;
            var dateStr    = textBox.Text;
            var formatStr  = GetDateFormat(datePicker);

            datePicker.SelectedDate = DatePickerDateTimeConverter.StringToDateTime(datePicker, formatStr, dateStr);
        }
コード例 #3
0
    private static void DatePickerOnCalendarOpened(object sender, RoutedEventArgs routedEventArgs)
    {
        /* When DatePicker's TextBox is not focused and its Calendar is opened by clicking its calendar button
         * it again sets its text to the result of its internal date parsing. A workaround is to set this
         * to our own string when it is opened. */
        var datePicker = (DatePicker)sender;
        var textBox    = GetTemplateTextBox(datePicker);
        var formatStr  = GetDateFormat(datePicker);

        textBox.Text = DatePickerDateTimeConverter.ParseDateTime(formatStr, datePicker.SelectedDate);
    }
コード例 #4
0
    private static void DatePickerOnCalendarOpened(object sender, RoutedEventArgs e)
    {
        /* When DatePicker's TextBox is not focused and its Calendar is opened by clicking its calendar button
         * its text will be the result of its internal date parsing until its TextBox is focused and another
         * date is selected. A workaround is to set this string when it is opened. */
        var datePicker = (DatePicker)sender;
        var textBox    = GetTemplateTextBox(datePicker);
        var formatStr  = GetDateFormat(datePicker);

        textBox.Text = DatePickerDateTimeConverter.DateTimeToString(formatStr, datePicker.SelectedDate);
    }
コード例 #5
0
    private static void DatePickerOnKeyUp(object sender, KeyEventArgs e)
    {
        if (e.Key != Key.Return)
        {
            return;
        }
        var datePicker    = (DatePicker)sender;
        var formatStr     = GetDateFormat(datePicker);
        var customTextBox = GetDatePickerTextBox(datePicker);
        var dateStr       = customTextBox.Text;

        datePicker.SelectedDate = DatePickerDateTimeConverter.ParseString(datePicker, formatStr, dateStr);
        customTextBox.Text      = DatePickerDateTimeConverter.ParseDateTime(formatStr, datePicker.SelectedDate);
    }
コード例 #6
0
        private static void TextBoxOnPreviewKeyDown(object sender, KeyEventArgs e)
        {
            if (e.Key != Key.Return)
            {
                return;
            }

            e.Handled = true;

            var textBox    = (TextBox)sender;
            var datePicker = (DatePicker)textBox.TemplatedParent;
            var dateStr    = textBox.Text;
            var formatStr  = GetDateFormat(datePicker);

            datePicker.SelectedDate = DatePickerDateTimeConverter.StringToDateTime(datePicker, formatStr, dateStr);
        }
コード例 #7
0
    private static void TextBoxOnPreviewKeyDown(object sender, KeyEventArgs e)
    {
        if (e.Key != Key.Return)
        {
            return;
        }

        /* DatePicker subscribes to its TextBox's KeyDown event to set its SelectedDate. When this
         * happens it sets its text to the result of its internal date parsing if Key.Return was
         * pressed. A workaround is to stop the KeyDown event bubbling up and handling setting the
         * DatePicker.SelectedDate ourself. */
        e.Handled = true;
        var textBox    = (TextBox)sender;
        var datePicker = (DatePicker)textBox.TemplatedParent;
        var dateStr    = textBox.Text;
        var formatStr  = GetDateFormat(datePicker);

        datePicker.SelectedDate = DatePickerDateTimeConverter.ParseString(datePicker, formatStr, dateStr);
    }
コード例 #8
0
        private static void TextBoxOnPreviewKeyDown(object sender, System.Windows.Input.KeyEventArgs e)
        {
            if (e.Key != System.Windows.Input.Key.Return)
            {
                return;
            }

            /* DatePicker subscribes to its TextBox's KeyDown event to set its SelectedDate if Key.Return was
             * pressed. When this happens its text will be the result of its internal date parsing until it
             * loses focus or another date is selected. A workaround is to stop the KeyDown event bubbling up
             * and handling setting the DatePicker.SelectedDate. */

            e.Handled = true;

            var textBox    = (TextBox)sender;
            var datePicker = (DatePicker)textBox.TemplatedParent;
            var dateStr    = textBox.Text;
            var formatStr  = GetDateFormat(datePicker);

            datePicker.SelectedDate = DatePickerDateTimeConverter.StringToDateTime(datePicker, formatStr, dateStr);
        }