Inheritance: System.Windows.Controls.Control
        /// <summary>
        /// Gets a sequence of LoopingSelector parts ordered according to culture string for date/time formatting.
        /// </summary>
        /// <returns>LoopingSelectors ordered by culture-specific priority.</returns>
        protected override IEnumerable <LoopingSelector> GetSelectorsOrderedByCulturePattern()
        {
            string pattern = CultureInfo.CurrentCulture.DateTimeFormat.ShortDatePattern.ToUpperInvariant();

            if (DateTimePickerBase.DateShouldFlowRTL())
            {
                char[] reversedPattern = pattern.ToCharArray();
                Array.Reverse(reversedPattern);
                pattern = new string(reversedPattern);
            }

            return(GetSelectorsOrderedByCulturePattern(
                       pattern,
                       new char[] { 'Y', 'M', 'D' },
                       new LoopingSelector[] { PrimarySelector, SecondarySelector, TertiarySelector }));
        }
        /// <summary>
        /// Gets a sequence of LoopingSelector parts ordered according to culture string for date/time formatting.
        /// </summary>
        /// <returns>LoopingSelectors ordered by culture-specific priority.</returns>
        protected override IEnumerable <LoopingSelector> GetSelectorsOrderedByCulturePattern()
        {
            string pattern = CultureInfo.CurrentCulture.DateTimeFormat.LongTimePattern.ToUpperInvariant();

            // The goal is to put the AM/PM part at the beginning for RTL languages.
            if (DateTimePickerBase.IsRTLLanguage())
            {
                var parts = pattern.Split(' ');
                Array.Reverse(parts);
                pattern = string.Join(" ", parts);
            }

            return(GetSelectorsOrderedByCulturePattern(
                       pattern,
                       new char[] { 'H', 'M', 'T' },
                       new LoopingSelector[] { PrimarySelector, SecondarySelector, TertiarySelector }));
        }