Всплывающие окна в WPF сразу теряют фокус и закрываются - PullRequest
0 голосов
/ 07 декабря 2009

Я бьюсь головой о проблеме всплывающего окна WPF и надеюсь, что кто-нибудь сможет мне помочь :) Схема выглядит так:

Наше приложение хранит список UIObjects - они представляют элементы, которые отображаются в окне просмотра 3d (через элемент UIRenderObject, который представляет собой просто квадратную сетку с растровым изображением на нем) и в виде дерева (через член TreeViewItem ).

В любом случае, когда объект обнаруживает щелчок правой кнопкой мыши, он пытается открыть всплывающее окно. Код для этого настолько прост, насколько вы можете получить:

ContextMenu contextMenu = new ContextMenu();

//add content

contextMenu.IsOpen = true;

Когда я щелкаю в окне просмотра, все работает как положено - всплывающее окно открывается и остается открытым, пока не потеряет фокус или не будет сделан выбор. Однако в древовидном представлении всплывающее окно теряет фокус и немедленно закрывается.

Я попытался явно установить фокус, явно установить PlacementTarget, пометить событие мыши как обработанное до и после вызова, чтобы открыть всплывающее окно, утончить пометку всплывающего окна как «StaysOpen» и дюжину других вещей закрывается немедленно.

Любая помощь будет высоко ценится. Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 09 декабря 2009

Вздох, как оказалось, я слишком усложнил вопрос. Вместо того, чтобы управлять самим контекстным меню, нужно было просто назначить его собственному ContextMenu TreeViewItem и позволить системе справиться с ним. Это научит меня. Спасибо за вклад каждого:)

0 голосов
/ 07 декабря 2009

Это поведение по умолчанию для ContextMenu. В качестве альтернативы вы можете использовать Popup Class вместо ContextMenu. Затем вы можете расширить его как ваше требование.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...