我正在尝试使用一个顶部,透明的非模态窗口在WPF中捕获鼠标事件。如果窗口的不透明度为0.01或更高,并且具有背景颜色,则这样做是有效的,但当不透明度设置为0时,它将不再接收鼠标消息。是否有一种方法使此窗口看起来完全透明并仍然获得鼠标输入?
我正在尝试使用一个顶部,透明的非模态窗口在WPF中捕获鼠标事件。如果窗口的不透明度为0.01或更高,并且具有背景颜色,则这样做是有效的,但当不透明度设置为0时,它将不再接收鼠标消息。是否有一种方法使此窗口看起来完全透明并仍然获得鼠标输入?
只需将Background设置为Brushes.Transparent,而不是Background=null。
您无需使用不透明度(即将其保持在100%不透明度)。
MyGrid
,您希望它是Transparent
并始终获取MouseOverEvent
.....
如果(窗口AllowsTransparency
为True
且窗口Background
为Transparent
)那么
使用像
# 01777777
这样的颜色用于MyGrid
Background
或者0.01
用于MyGrid
Opacity
。
否则
使用像
# 00777777
这样的东西用于MyGrid
Background
或者0.00
用于MyGrid
Opacity
。
你可能会发现使用 Mouse.Capture
更简单。
将不透明度设置为100%(或任何非零值),并将背景设置为透明(而不是 null)应使大多数控件可点击。
确保将 IsHitTestVisible 设置为 true。即使不透明度为100%且背景为透明,也无法点击所有控件。