Я столкнулся с этой проблемой с WPF, и похоже, что это имеет какое-то отношение к тому, как Word обрабатывает события из дочерних окон. Всякий раз, когда выпадающий список (или, возможно, любой другой «всплывающий» элемент управления, например контекстное меню) нарисован поверх одного из окон Word, он становится немного жадным и предполагает, что вы нажимаете на основное окно.
Я не знаю много о том, как работает обмен сообщениями/событиями в Windows, и у меня не было времени, чтобы выяснить, как наилучшим образом решить проблему, но на основании сообщения о создании окон без полей я попробовал модифицируя стили окна элемента управления WinForms пользователя следующим образом (константы окна стиля от http://www.pinvoke.net/default.aspx/Constants/Window%20styles.html):
protected override CreateParams CreateParams
{
get
{
CreateParams p = base.CreateParams;
if (!DesignMode)
{
unchecked
{
p.Style = (int)(WindowStyles.WS_VISIBLE |
WindowStyles.WS_POPUP |
WindowStyles.WS_CLIPSIBLINGS |
WindowStyles.WS_CLIPCHILDREN);
}
}
return p;
}
}
Любопытно (или, может быть не так с любопытством для людей, которые более знакомы с сообщениями Windows), раскрывающиеся ДЕЛАЕТ реагировать на клавиатуру события (например, нажмите, чтобы открыть список, затем используйте клавиатуру, чтобы выбрать элемент).
Функционально, похоже, не проблема с указанным выше кодом ... но я не уверен, что последствия говорят, что пользовательский элемент управления является всплывающим окном, а не дочерним.
Другое сообщение, относящееся к этому вопросу: WPF ComboBox doesn't stay open when used in a Task Pane.