Событие SelectionChanged не срабатывает для производного элемента управления ComboBox – WPF

У меня есть производный элемент управления Combobox. В событии Autogeneratingcolumns я назначил FrameworkElemnt производного поля со списком, как показано ниже:

        var templateColumn = new DataGridTemplateColumn
            {
                CellTemplate = new DataTemplate
                {
                    VisualTree = derivedComboFrameWorkElement
                }
            };
grid.Column = CreateTemplateColumn(templateColumn);

Но событие SelectionChanged не срабатывает для поля со списком. Самое смешное, что когда я проверяю визуальное дерево (GridCell и мой ComoboBox) с помощью WPF-Inspector, срабатывает событие SelectionChanged. Поэтому сомневаюсь, что какая-то проблема с обновлениями VisualTree. Пожалуйста, помогите мне заставить это работать правильно.

С уважением, ани


person Ani    schedule 17.05.2018    source источник
comment
Предоставьте минимальный, полный и поддающийся проверке пример, демонстрирующий поведение, которое вы [не] видите. В противном случае вы просто просите нас гадать, а это непродуктивное использование чьего-либо времени.   -  person 15ee8f99-57ff-4f92-890c-b56153    schedule 17.05.2018


Ответы (1)


Хорошие новости. Проблема выявлена. И ответ таков: было событие PreviewMouseDown, и в этом событии был вызван метод Focus(). И тем самым выпадающий список был закрыт и недоступен для клика. Я исправил логику, чтобы решить проблему.

Чтобы выявить такие проблемы, мы можем использовать WPF Inspector для проверки визуального дерева и Snoop, который показывает все вызванные события. Snoop помог мне проанализировать проблему. Спасибо за помощь.

С уважением, ани

person Ani    schedule 22.05.2018
comment
Можете ли вы объяснить больше, как вы определяете проблему? На самом деле я тоже застрял в той же проблеме https://stackoverflow.com/questions/52054862/wpf-combo-box-scrolling-by-mousewheel-works-but-scroll-bar-clicking-does-not?noredirect=1#comment91150447_52054862 - person Neeraj Dubey; 31.08.2018