0

我正在尝试创建一个鼠标悬停状态,当鼠标悬停在堆栈面板上时它会改变其不透明度。

我已经创建了状态,并为堆栈面板创建了一个 mouse_enter 事件,并且在 cs 文件后面的代码中,我在 Mouse_Enter 事件上有以下代码。

MouseOver.Begin();

MouseOver 是 StoryBoard 的名称,但是当我的鼠标悬停在堆栈面板上甚至单击堆栈面板时,什么也没发生,我错过了什么?

谢谢

玩小子

4

3 回答 3

1

我自己想通了。

使用此代码:

VisualStateManager.GoToState

感谢大家。

于 2009-08-12T12:47:57.840 回答
0

您确定事件已触发(您已正确连接事件)?尝试使用消息框或其他东西进行检查。( System.Windows.MessageBox.Show())

您确定故事板在其他情况下运行良好(在页面加载时尝试过吗?)

如果这两种方法都有效,请说明您是如何添加事件处理程序的。

于 2009-08-11T09:12:53.323 回答
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 回答