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

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

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

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

0
Ani 17 Май 2018 в 14:56

1 ответ

Лучший ответ

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

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

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

0
Ani 22 Май 2018 в 10:12