我一直在 WPF 中开发一个 GUI,我对它还很陌生,到目前为止只使用过 Windows 窗体。到目前为止,我的 GUI 非常简单:它包含两个矩形,每个矩形都有一个阴影。可以说,阴影会产生“漂浮在画布上方”的矩形效果。
当按下其中一个矩形时,myRectangle.MouseDown
会处理事件以使阴影消失,从而创建矩形被按下到画布上的效果,就像按钮一样。类似地,当鼠标按钮被释放时,myRectangle.MouseDown
事件被处理使得阴影重新出现并且矩形再次“浮动”。这种行为使它们类似于按钮。请注意,我希望它们是矩形而不是自定义按钮是有原因的。
这是我上面描述的一些代码:
Private Sub RectangleMouseDown(ByVal sender As Object, _
ByVal e As System.Windows.Input.MouseButtonEventArgs)
Dim effectNoShadow As New Effects.DropShadowEffect
effectNoShadow.Opacity = 0
CType(sender, Rectangle).Effect = effectNoShadow
End Sub
Private Sub RectangleMouseUp(ByVal sender As Object, _
ByVal e As System.Windows.Input.MouseButtonEventArgs)
Dim effectDropShadow As New Effects.DropShadowEffect
effectDropShadow.Opacity = 1
effectDropShadow.BlurRadius = 10
effectDropShadow.ShadowDepth = 5
CType(sender, Rectangle).Effect = effectDropShadow
End Sub
Private Sub AddHandlersToRectangles()
For Each element As UIElement In MainGrid.Children
If TypeOf element Is Rectangle Then 'If element is a Rectangle'
AddHandler CType(element, Rectangle).MouseDown, AddressOf RectangleMouseDown
AddHandler CType(element, Rectangle).MouseUp, AddressOf RectangleMouseUp
End If
Next
End Sub
到目前为止,一切都很好。我遇到问题的一种情况是,当鼠标光标离开矩形而鼠标按钮仍被按下时,矩形永远保持“按下”状态,因为显然,按钮没有在矩形上方释放.
有没有办法解决这个问题?我想看到的行为如下:
- 如果在按下鼠标按钮时指针离开矩形,我希望阴影重新出现。这可以说很简单,因为理论上在这种情况下,任何时间
myRectangle.MouseLeave
被提升,阴影都应该重新出现,即使它已经存在。 - 如果在按下鼠标按钮时指针离开了一个矩形,然后在释放按钮之前又回来了,我希望阴影再次消失。这给我带来了问题。不知道该怎么做。
我试过myRectangle.IsMouseCaptured
了,这总是错误的。是否有任何布尔值事件UIElement
或Rectangle
特别可以帮助我解决这个问题?