我正在尝试创建鼠标悬停状态,当鼠标悬停在堆栈面板上时,它会改变其不透明度。
我已经创建了状态,并为堆栈面板创建了一个mouse_enter事件,并且在cs文件后面的代码中,我在Mouse_Enter事件上有以下代码。
MouseOver.Begin();
其中MouseOver是StoryBoard的名称,但当我的鼠标悬停在堆栈面板上甚至点击堆栈面板时,什么也没发生,我错过了什么?
由于
PlayKid
答案 0 :(得分:1)
我想出了自己。
使用此代码:
VisualStateManager.GoToState
谢谢大家。
答案 1 :(得分:0)
您确定事件已被触发(您已正确连接事件)吗?尝试使用消息框或其他东西进行检查。 (System.Windows.MessageBox.Show()
)
你确定故事板在其他情况下运行良好(在页面加载时尝试过吗?)
如果这些都有效,请解释你如何添加事件处理程序。
答案 2 :(得分: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的故障排除建议,但是如果你根本无法触发事件(我认为这是问题),请试一试。