private static void textChangedCallback(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {
            AutoCompleteBoxView view = (AutoCompleteBoxView)d;
            String text = (String)e.NewValue;

            if (!String.IsNullOrEmpty(text))
            {
                view.findSuggestions(text);
                if (view.Suggestions.Count > 0)
                {
                    view.displaySuggestions();

                    foreach (Object suggestion in view.Suggestions)
                    {
                        if (text.Equals(suggestion.ToString()))
                        {
                            view.popup.IsOpen = false;
                            view.SelectedItem = suggestion;
                            return;
                        }
                    }
                }
            }
            else
            {
                view.popup.IsOpen = false;
            }

            view.SelectedItem = null;
        }
        private static void selectedItemChangedCallback(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {
            AutoCompleteBoxView view = (AutoCompleteBoxView)d;
            Object item = e.NewValue;

            if (item != null)
            {
                view.Text = item.ToString();
            }

            view.autoCompleteTextBox.Focus();
            view.autoCompleteTextBox.CaretIndex = view.Text.Length;
        }