2009-08-11 3 views
0

Ich versuche, einen Mouse-Hover-Status zu erstellen, der seine Deckkraft ändert, wenn sich eine Maus über dem Stack-Panel befindet.Wie kann ich einen Mouse Hover State auf Silverlight für ein Stack Panel erstellen?

Ich habe den Zustand erstellt und erstellt ein mouse_enter-Ereignis für das Stack-Panel, und auf den Code hinter CS-Datei, habe ich den folgenden Code auf Mouse_Enter-Ereignis.

MouseOver.Begin();

Wo MouseOver der Name des StoryBoards ist, aber wenn meine Maus über das Stackpanel schwebt oder auf das Stackpanel klickt, passiert nichts, was fehlt mir?

Dank

PlayKid

Antwort

1

Ich habe es selbst herausgefunden.

Mit diesem Code:

VisualStateManager.GoToState

Vielen Dank allen.

0

Sind Sie sicher, dass das Ereignis ausgelöst wird (Sie das Ereignis richtig verdrahtet haben)? Versuchen Sie es mit einem Nachrichtenfeld oder etwas zu überprüfen. (System.Windows.MessageBox.Show())

Sind Sie sicher, dass das Storyboard funktioniert gut in anderen Situationen (versuchte es auf Seite zu laden, oder was?)

Wenn beide diese Arbeit, erklären Sie bitte, wie Sie ging den Event-Handler über das Hinzufügen.

0

Meiner Erfahrung nach funktioniert das Anschließen eines Mouse_Enter-Ereignisses an das Panel nicht, da der Inhalt des Panels das Ereignis stehlen würde. Meine übliche Lösung besteht darin, ein transparentes Ziel zu erstellen, das den Bereich abdeckt, für den ich Mausereignisse haben möchte, und dieses Element oben auf dem visuellen Baum zu halten. So sieht das XAML so etwas wie:

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

Und dann der ContentPanelSizeChanged Handler setzt die Größe des HitTarget Leinwand die tatsächliche (gerendert) Größe des Stackpanel zu sein. Dasselbe gilt für MouseButtonDown-Ereignisse, und ich würde annehmen, dass es auch für MouseWheel-Ereignisse funktioniert. Ich würde empfehlen, Senthils Vorschläge zur Fehlerbehebung zu versuchen, aber wenn Sie das Ereignis überhaupt nicht auslösen können (was ich annehmen würde, ist das Problem), versuchen Sie es.

Verwandte Themen