在Silverlight 3项目中,我在边框控件上使用鼠标左键按钮事件,但发现即使我点击边框外面的按钮(如5-10像素)也会引发事件。
以前有人遇到过这个问题吗?
感谢您的期待!
以下是我们捕获brdSelect事件的XAML:
<Border MouseLeftButtonDown="Grid_Mousedown" x:Name="brdSelect" Grid.Row="1" Grid.Column="1" BorderThickness="0.5" BorderBrush="#FF2D9FD2">
<Grid x:Name="grdSelect" >
<Border x:Name="brdImage" BorderThickness="0" CornerRadius="5" Width="Auto" Height="Auto">
<Image Height="Auto" Width="Auto" Stretch="UniformToFill" x:Name="imgMotive"/>
</Border>
<Image Height="Auto" Stretch="UniformToFill" x:Name="imgtmp" Visibility="Collapsed"/>
</Grid>
</Border>
<Image Height="13" Width="13" Source="../Images/rotate_small.JPG" Stretch="None" x:Name="imgRotate" Grid.Row="0" Grid.Column="3" Visibility="Collapsed"/>
<StackPanel Orientation="Horizontal" d:LayoutOverrides="GridBox" Grid.ColumnSpan="3" Margin="0,0,2,0" Width="32" HorizontalAlignment="Left">
<Image Height="13" Width="13" Source="../Images/delete_small.JPG" Stretch="None" x:Name="imgDelete" Visibility="Collapsed" />
</StackPanel>
<Image Source="../Images/resize_small.JPG" Stretch="None" x:Name="imgResize" Grid.Row="2" Grid.RowSpan="2" Grid.Column="2" Visibility="Collapsed" Opacity="0"/>
</Grid>
<TextBlock x:Name="txtLabel" Height="100" HorizontalAlignment="Left" Margin="-80,0,0,-20" Width="80" Text="X: 0 --- Y: 0" Foreground="Red" TextWrapping="Wrap" Visibility="Collapsed"/>
</Grid>
</Border>
答案 0 :(得分:0)
据我所知,问题出在MouseLeftButtonDown
事件处理中。在MSDN here中,我发现:
MouseLeftButtonDown事件是一个 冒泡事件。这意味着如果 多个MouseLeftButtonDown事件 是为元素树定义的, 每个对象都收到该事件 在对象层次结构中,以。开头 直接接收的对象 事件,然后气泡到每个 连续的父元素。 冒泡的比喻表明了 事件从底部开始并起作用 它在对象树上的方式。为一个 冒泡事件,发送者参数 标识事件的对象 处理,不一定是对象 实际上收到了输入 发起事件的条件。
您有CornerRadius="5"
的子边框。可能是这个属性实际上导致子边界接收鼠标事件在视觉上这不应该发生。虽然这取决于实际实施,但您最好检查一下。