コード例 #1
0
        /// <summary>
        /// Converts received text accordingly to <see cref="AutoCapitalizeMode"/>
        /// </summary>
        /// <param name="text">text that should be converted</param>
        /// <param name="culture"> culture info that should be used for conversion</param>
        /// <param name="mode">conversion mode</param>
        /// <returns>converted text</returns>
        public static string Convert(string text, CultureInfo culture, AutoCapitalizeMode mode = AutoCapitalizeMode.Sentences)
        {
            if (string.IsNullOrEmpty(text))
            {
                return(text);
            }

            if (culture == null)
            {
                culture = CultureInfo.CurrentUICulture;
            }

            switch (mode)
            {
            case AutoCapitalizeMode.Characters:
                return(CharacterConvertStrategy(text, culture));

            case AutoCapitalizeMode.None:
                return(text);

            case AutoCapitalizeMode.Words:
                return(WordConvertStrategy(text, culture));

            case AutoCapitalizeMode.Sentences:
            default:
                return(SentencesConvertStrategy(text, culture));
            }
        }
コード例 #2
0
        /// <summary>
        /// Build converter for autoCapitalize
        /// </summary>
        /// <param name="mode"><see cref="AutoCapitalizeMode"/></param>
        /// <returns>Instance that binds converter to the control</returns>
        internal static BindingBase GetBinder(AutoCapitalizeMode mode)
        {
            // Trick! To bind converter to control w/o Path we use MultiBinding where:
            //  1st binding is done to RelativeSource.Self
            //  2nd binding is done to fake source
            // MultiBinding contains reference to desired converter
            var multiBinding = new MultiBinding();

            multiBinding.Bindings.Add(new Binding
            {
                RelativeSource = RelativeSource.Self,
                Mode           = BindingMode.OneTime
            });
            multiBinding.Bindings.Add(new Binding("MyValue"));

            multiBinding.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged;
            multiBinding.Converter           = new AutoCapitalizeMultiConverter();
            multiBinding.ConverterParameter  = mode;

            return(multiBinding);
        }