/// <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); }
/// <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; } }
/// <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; } }
/// <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); } }