【问题标题】:Mouse event on transparent background透明背景上的鼠标事件
【发布时间】:2011-12-20 22:28:29
【问题描述】:
我已经创建了几个具有透明背景的画布,并希望在其上进行一些移动事件。
但是,我发现所有鼠标事件(例如 MouseLeftButtonDown)都不能作用于画布的背景为 Null 或 Transparent。但是如果我将背景设置为某种纯色(比如红色或蓝色),鼠标事件就会正常运行。
为什么?
我可以让鼠标事件在透明背景下正常工作吗?
谢谢!
【问题讨论】:
标签:
wpf
background
mouseevent
transparent
【解决方案2】:
Transparent 对鼠标事件有反应,这就是重点,你确定你甚至在点击画布吗?
这是一个仅限 XAML 的示例:
<Border Width="300" Height="300" BorderBrush="Black" BorderThickness="1">
<Canvas Background="Transparent">
<Canvas.Triggers>
<EventTrigger RoutedEvent="Canvas.MouseLeftButtonDown">
<BeginStoryboard>
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background">
<DiscreteObjectKeyFrame KeyTime="0" Value="{x:Static Brushes.Red}"/>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Canvas.Triggers>
</Canvas>
</Border>
如果您将Background 设置为null,无论是显式地还是隐式地移除该属性,它都不会再做出反应。
【解决方案3】:
请注意,将背景设置为透明与不设置(或将其设置为空)不同。我的经验是命中测试适用于透明背景,但不适用于空背景。