use*_*434 10 wpf background transparent mouseevent
我创建了几个透明背景的画布,并想在它上面做一些移动事件.
但是,我发现所有鼠标事件(例如MouseLeftButtonDown)都无法使用画布的背景功能为Null或Transparent.但是,如果我将背景设置为某种纯色(例如,红色或蓝色),则鼠标事件功能很好.
为什么?
我可以用透明背景使鼠标事件正常运行吗?
谢谢!
Isa*_*avo 28
我不确定为什么你会得到你得到的结果,但是当背景是透明的时候它应该可以正常工作(即你通过XAML或代码明确地将它设置为Brushes.Transparent).如果它为null,WPF将不会将其包含在命中测试中,因此它不符合鼠标事件的条件.
参见例如http://msdn.microsoft.com/en-us/library/ms752097.aspx(透明的可视对象也可以进行测试.)
很可能你的元素树中有另一个UIElement正在你的画布看到它之前捕获和处理鼠标事件(即通过设置e.Handled true)
H.B*_*.B. 13
Transparent DOES会对鼠标事件做出反应,这就是它的全部意义,你确定你甚至还在击中画布吗?
这是一个仅限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>
Run Code Online (Sandbox Code Playgroud)
如果将Background要null通过移除将不再发生反应的特性,无论是显式或隐式.
| 归档时间: |
|
| 查看次数: |
14528 次 |
| 最近记录: |