5

ユーザーコントロールが配置されたキャンバスがあります。ツールチップがユーザーコントロールまたはその子の1つに割り当てられている場合、そのツールチップは表示されません(openイベントも発生しません)。私はそれらのどれも明示的に無効にしません。

アプリケーションの他の場所にたくさんのツールチップを配置しましたが、作成したユーザーコントロール上のツールチップを除いて、すべて表示されます。

何か案は?

階層はおおまかに次のとおりです。

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

3 に答える 3

4

Usercontrol の背景が x:Null の場合、マウス イベントは基になるコンテンツにフォールスルーします。「透明」を使用して、マウスイベントがユーザーコントロールに確実に行くようにすることができます。

この動作は、ユーザー コントロールに固有のものではありません。これは、すべての WPF の一般的な動作です。あなたの例では、子要素に塗りつぶしがあると仮定すると、それらの上にカーソルを置いて、設定したツールチップを表示できるはずです。

于 2009-01-26T00:39:51.647 に答える
2

私はついにそれを理解しました。キャンバス上で、ポインターの線 (現在の位置と左/下の値をグリッドに表示するための水平および垂直) を描画していました。 . 関連のないすべてのジオメトリで IsHitTestVisible を false に設定すると、ツールチップが正しく表示されるようになりました。

マウスの出入りイベントが表示された理由は、カーソルを移動すると、線が 1 フレーム遅れてドラッグされ、マウスの出入りはできるが移動できないためです。

これで問題は解決しました。

于 2009-02-01T21:20:46.877 に答える
0

ルートキャンバスでテストしたときにこの問題が発生しました。背景がnullの場合、長方形にツールチップが表示されませんでした。ただし、これはユーザーコントロールの問題を解決するものではありません。ユーザーコントロールとその中のキャンバスの両方に透明な背景を試しました。その内側のキャンバス内の長方形の背景は黒ですが、運が悪かったのです。ツールチップが開かないだけです。

ルートキャンバスにツールチップを配置しようとしましたが、実際には表示されますが、背景/塗りつぶしが設定されていても、個々の子ユーザーコントロールや内部のキャンバス/子には表示されません。

また、MouseEnterイベントを配置すると、マウスが内側のキャンバスに入るときに実際に発生することが示されますが、ツールチップはポップしません。

于 2009-01-26T02:38:28.630 に答える