0

2 つのカスタム コントロールがある WPF ユーザー コントロールがあります。

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="*" />
        <ColumnDefinition Width="65" />
        <ColumnDefinition Width="*" />
    </Grid.ColumnDefinitions>

    <MyControl x:Name="leftControl" Grid.Column="0" />
    <MyControl x:Name="rightControl" Grid.Column="2" />
</Grid>

カスタム コントロールは、何かを行うためのマウス エンター イベントとマウス リーブ イベントに反応します。ただし、ツールチップもあります。左側のコンポーネントは、右側のコンポーネントの領域に到達した場合にツールチップが右側のコンポーネントによって隠されないようにするために、明示的に右側のコンポーネントの上にあります。

私の問題: ツールチップは、左側のコンポーネントの境界を独自に拡張しているようです。右側のコントロールの領域の一部をカバーするツールチップが表示されていて、右側のコントロールにカーソルを合わせると、ツールチップがあった領域に入るとすぐに左側のコントロールに入ったかのように、両方の入力/終了イベントが発生しますまだ右のコントロールをホバリングしている間。

マウスを上げたり離したりするときにツールチップ領域を無視するようにWPFに指示するにはどうすればよいですか?

説明するスクリーンショット:

  1. ツールチップが右側のコンポーネントの領域を部分的に覆っている状態で、左側のコンポーネントにカーソルを合わせる 1. ツールチップが右側のコンポーネントの領域を部分的に覆っている状態で、左側のコンポーネントにカーソルを合わせます。

  2. 右のコンポーネントにカーソルを合わせる 2. 右のコンポーネントにカーソルを合わせる

  3. ツールチップが終了するポイントで右のコンポーネントにカーソルを合わせます。Enter/Leave イベントが発生しました。マウス カーソルの位置を示すために追加されたマウス カーソル。 3. ツールチップが終了するポイントで右のコンポーネントにカーソルを合わせます。 Enter/Leave イベントが発生しました。 マウス カーソルの位置を示すために追加されたマウス カーソル

ありがとう!

4

1 に答える 1

2

を使用する代わりの方法がありますTooltip: A tooltip or something similar with cursor with wpf

Popupマウスに対して相対的に移動する を作成するだけです。コントロールを離れると、Popup非表示になります。これは、問題の良い代替手段です。表示する場所を調整したい場合があります (つまり、右端に達すると、マウスの左に移動します)。直接的な答えではないことはわかっていますが、解決策です。:)

于 2013-02-19T11:48:25.010 に答える