0

マウスがスタックパネル上にあるときに不透明度を変更するマウスホバー状態を作成しようとしています。

状態を作成し、スタックパネルのmouse_enterイベントを作成しました。また、csファイルの背後にあるコードで、Mouse_Enterイベントに次のコードがあります。

MouseOver.Begin();

MouseOverはStoryBoardの名前ですが、マウスをスタックパネルの上に置いたり、スタックパネルをクリックしたりしても、何も起こりません。何が欠けていますか?

ありがとう

PlayKid

4

3 に答える 3

1

私は自分自身を理解しました。

このコードで:

VisualStateManager.GoToState

みんな、ありがとう。

于 2009-08-12T12:47:57.840 に答える
0

私の経験では、Mouse_Enterイベントをパネルに接続しても、パネル内のコンテンツがイベントを盗んでしまうため、機能しません。私の通常の解決策は、マウスイベントが必要な領域をカバーする透明なターゲットを設定し、そのアイテムをビジュアルツリーの一番上に保持することです。したがって、XAMLは次のようになります。

<StackPanel x:Name="ContentPanel" SizeChanged="ContentPanelSizeChanged" >
    < /*Some content here */ >
</StackPanel>
<Canvas x:Name="HitTarget" Mouse_Enter="HitTargetMouseEnter" />

次に、ContentPanelSizeChangedハンドラーは、HitTarget CanvasのサイズをStackPanelの実際の(レンダリングされた)サイズに設定します。同じことがMouseButtonDownイベントでも機能し、MouseWheelイベントでも機能すると思います。Senthilのトラブルシューティングの提案を試すことをお勧めしますが、イベントをまったく起動できない場合は(これが問題だと思います)、これを試してみてください。

于 2009-08-11T23:20:57.220 に答える
0

イベントが発生したことを確認しますか(イベントを適切に接続しました)?メッセージボックスなどを使用して確認してみてください。(System.Windows.MessageBox.Show()

ストーリーボードは他の状況でもうまく機能しますか(ページの読み込みなどで試してみましたか?)

これらの両方が機能する場合は、イベントハンドラーを追加する方法を説明してください。

于 2009-08-11T09:12:53.323 に答える