Подсказка wpf не отображается в usercontrol или его дочерних элементах - PullRequest
5 голосов
/ 25 января 2009

У меня есть холст, на котором расположены пользовательские элементы управления. Когда всплывающая подсказка назначается элементу управления пользователя или одному из его дочерних элементов, эта подсказка не отображается (событие open также не вызывается). Я явно не отключаю ни один из них.

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

Есть идеи?

Иерархия примерно такая:

<Grid>
 <Canvas>
  <UserControl>
   <Canvas>
    <Line/>
    <Rectangle/>
   </Canvas>
  </UserControl>
 </Canvas
</Grid>

Ответы [ 3 ]

4 голосов
/ 26 января 2009

Если фон Usercontrol имеет вид x: Null, то события мыши будут проходить до основного содержимого. Вы можете использовать «Прозрачный», чтобы гарантировать, что события мыши перейдут в usercontrol.

Это поведение не уникально для пользовательских контролей; это общее поведение для всех WPF. В вашем примере, предполагая, что у вас есть заполнение дочерних элементов, вы должны быть в состоянии навести на них курсор и увидеть заданные подсказки.

2 голосов
/ 02 февраля 2009

Я наконец понял это. На моем холсте я рисовал линии указателя (горизонтальные и вертикальные, чтобы показать на сетке, где я нахожусь, и значения слева / снизу), получается, что когда выполнялся тест на удар, он ударял по этим линиям и останавливал , Установив для IsHitTestVisible значение false для всей несущественной геометрии, моя подсказка теперь отображается правильно.

Причина, по которой я видел событие входа / выхода мыши, заключалась в том, что при перемещении курсора линии перетаскивали на 1 кадр позади и, таким образом, позволяли мыши входить / выходить, но не двигались.

Это решает мою проблему.

0 голосов
/ 26 января 2009

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

Я попытался поместить всплывающую подсказку на свой корневой холст, и она действительно отображается, но не на моих отдельных дочерних пользовательских элементах управления или их внутренних холстах / дочерних элементах, даже если у них есть набор фона / заливки.

Кроме того, размещение события MouseEnter показывает, что оно действительно срабатывает, когда мышь входит во внутренний холст, но всплывающая подсказка не появляется.

...