Как создать состояние наведения мыши на Silverlight для панели стека? - PullRequest
0 голосов
/ 11 августа 2009

Я пытаюсь создать состояние наведения мыши, которое меняет свою непрозрачность, когда мышь находится над панелью стека.

Я создал состояние и создал событие mouse_enter для панели стека. В коде файла cs у меня есть следующий код для события Mouse_Enter.

MouseOver.Begin ();

Где MouseOver - это имя StoryBoard, но когда моя мышь зависает над панелью стека или даже щелкает панель стека, ничего не происходит, что мне не хватает?

Спасибо

PlayKid

Ответы [ 3 ]

1 голос
/ 12 августа 2009

Я разобрался сам.

С этим кодом:

VisualStateManager.GoToState

Спасибо всем.

0 голосов
/ 12 августа 2009

По моему опыту, подключение события Mouse_Enter к панели не работает, потому что содержимое внутри панели в конечном итоге крадет событие. Мое обычное решение состоит в том, чтобы установить прозрачную цель, которая покрывает область, для которой я хочу события мыши, и держать этот элемент в верхней части визуального дерева. Так что XAML выглядит примерно так:

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

А затем обработчик ContentPanelSizeChanged устанавливает размер холста HitTarget равным фактическому (отображаемому) размеру StackPanel. То же самое работает для событий MouseButtonDown, и я предполагаю, что это работает и для событий MouseWheel. Я бы порекомендовал попробовать предложения по устранению неполадок от Senthil, но если вы вообще не можете запустить событие (которое, я бы предположил, является проблемой), попробуйте.

0 голосов
/ 11 августа 2009

Вы уверены, что событие запущено (вы правильно подключили событие)? Попробуйте проверить, используя окно сообщения или что-то. (System.Windows.MessageBox.Show())

Вы уверены, что раскадровка хорошо работает в других ситуациях (пробовал при загрузке страницы или как?)

Если оба эти метода работают, объясните, пожалуйста, как вы добавили обработчик событий.

...