2009-08-11 10 views
0

マウスがスタックパネル上にあるときに不透明度を変更するマウスのホバー状態を作成しようとしています。スタックパネル用のSilverlightでマウスのホバー状態を作成するにはどうすればよいですか?

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

MouseOver.Begin();

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

PlayKid

答えて

1

私は自分自身を考え出しました。このコードでは

VisualStateManager.GoToState

みんなありがとう。

0

おかげで、あなたは(あなたが適切にイベントを配線している)イベントが発生していることを確認していますか?メッセージボックスなどで確認してみてください。これらの作業の両方の場合(System.Windows.MessageBox.Show()

は、ストーリーボードが他の状況でうまく動作しますが、確かに(ページのロードか何かでそれを試してみました?)

です、あなたは、イベントハンドラを追加する方法についていった方法を説明してください。

0

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

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

をそしてContentPanelSizeChangedハンドラはのStackPanelの実際の(レンダリング)のサイズであることをHitTargetキャンバスのサイズを設定します。 MouseButtonDownイベントでも同じことが働き、MouseWheelイベントでも同様に動作します。私はSenthilのトラブルシューティングのヒントを試してみることをお勧めしますが、もしあなたがイベントを起こすことができないなら(これは私が問題と思われるでしょう)、これを試してみてください。

関連する問題