Пример #1
0
        /// <summary>
        ///     Indicates whether or not the watermark should be shown on the specified control
        /// </summary>
        /// <param name="c"><see cref="Control" /> to test</param>
        /// <returns>true if the watermark should be shown; false otherwise</returns>
        private static bool ShouldShowWatermark(Control c)
        {
            ComboBox            comboBox            = c as ComboBox;
            TextBox             textBox             = c as TextBox;
            ItemsControl        itemsControl        = c as ItemsControl;
            AutoCompleteTextBox autoCompleteTextBox = c as AutoCompleteTextBox;

            if (comboBox != null)
            {
                return(string.IsNullOrEmpty(comboBox.Text));
            }
            if (textBox != null)
            {
                return(string.IsNullOrEmpty(textBox.Text));
            }
            if (itemsControl != null)
            {
                return(itemsControl.Items.Count == 0);
            }
            if (autoCompleteTextBox != null)
            {
                if (autoCompleteTextBox.IsDelayed)
                {
                    return(false);
                }

                return(string.IsNullOrEmpty(autoCompleteTextBox.Text));
            }
            return(false);
        }
Пример #2
0
        /// <summary>
        ///     Called when <see cref="AutoCompleteTextBox.Text" /> dependency property changes.
        /// </summary>
        /// <param name="dependencyObject">The dependency object.</param>
        /// <param name="e">The <see cref="DependencyPropertyChangedEventArgs" /> instance containing the event data.</param>
        private static void OnTextChanged(DependencyObject dependencyObject, DependencyPropertyChangedEventArgs e)
        {
            AutoCompleteTextBox autoCompleteTextBox = dependencyObject as AutoCompleteTextBox;

            if (autoCompleteTextBox != null)
            {
                autoCompleteTextBox.Text = (string)e.NewValue;
            }
        }
Пример #3
0
        /// <summary>
        ///     Called when <see cref="AutoCompleteTextBox.AutoCompleteSource" /> dependency property changes.
        /// </summary>
        /// <param name="dependencyObject">The dependency object.</param>
        /// <param name="e">The <see cref="DependencyPropertyChangedEventArgs" /> instance containing the event data.</param>
        private static void OnAutoCompleteSourceChanged(DependencyObject dependencyObject, DependencyPropertyChangedEventArgs e)
        {
            AutoCompleteTextBox autoCompleteTextBox = dependencyObject as AutoCompleteTextBox;

            if (autoCompleteTextBox != null)
            {
                autoCompleteTextBox.AutoCompleteSource = (IEnumerable <string>)e.NewValue;
            }
        }
Пример #4
0
        /// <summary>
        ///     Handles changes to the Watermark property.
        /// </summary>
        /// <param name="d"><see cref="DependencyObject" /> that fired the event</param>
        /// <param name="e">A <see cref="DependencyPropertyChangedEventArgs" /> that contains the event data.</param>
        private static void OnContentChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {
            Control control = (Control)d;

            control.Loaded += Control_Loaded;

            ComboBox            comboBox            = d as ComboBox;
            TextBox             textBox             = d as TextBox;
            AutoCompleteTextBox autoCompleteTextBox = d as AutoCompleteTextBox;

            if (comboBox != null || textBox != null || autoCompleteTextBox != null)
            {
                control.GotKeyboardFocus  += Control_GotKeyboardFocus;
                control.LostKeyboardFocus += Control_Loaded;

                if (textBox != null)
                {
                    textBox.TextChanged += TextBox_TextChanged;
                }
                else if (autoCompleteTextBox != null)
                {
                    autoCompleteTextBox.TextChanged += TextBox_TextChanged;
                }
            }

            ItemsControl i = d as ItemsControl;

            if (i != null && comboBox == null)
            {
                // for Items property
                i.ItemContainerGenerator.ItemsChanged += ItemsChanged;
                ItemsControls.Add(i.ItemContainerGenerator, i);

                // for ItemsSource property
                DependencyPropertyDescriptor prop = DependencyPropertyDescriptor.FromProperty(ItemsControl.ItemsSourceProperty, i.GetType());
                prop.AddValueChanged(i, ItemsSourceChanged);
            }
        }