2010-06-02 3 views
0

У меня есть выделение в Word addin. Содержимое выпадающего списка часто достаточно длинное, чтобы задрапировать элемент управления слайдером Word. Однако выбор элемента непосредственно над регулятором зуммирования (который скрыт от просмотра) приводит к тому, что элемент управления увеличением получает фокус, закрывает поле со списком и изменяет настройку масштабирования! Выбор в выпадающем списке не затрагивается.сохранить фокус в поле со списком WPF в addin

Как я могу сделать поле со стрелкой в ​​фокусе и изменить выбранное значение на элемент (через панель масштабирования)? Спасибо ...

ответ

1

Я столкнулся с этой проблемой с 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.

Смежные вопросы