提问人:esege 提问时间:4/5/2023 最后编辑:esege 更新时间:4/5/2023 访问量:50
WPF 中 Border 的奇怪 MouseEnter、MouseLeave 行为
Weird MouseEnter, MouseLeave behaviour of Border in WPF
问:
这是 XAML 部分。
<StackPanel Orientation="Vertical">
<Border Name="myBorder"
BorderBrush="Black"
BorderThickness="2"
Width="100"
Height="100"
MouseEnter="MyBorder_OnMouseEnter"
MouseLeave="MyBorder_OnMouseLeave">
</Border>
<StackPanel Width="150"
Height="150"
Background="Red"
MouseEnter="StackPanel_OnMouseEnter"
MouseLeave="StackPanel_OnMouseLeave"/>
</StackPanel>
下面是 C# 部分
private void MyBorder_OnMouseEnter(object sender, MouseEventArgs e)
{
Debug.WriteLine("MyBorder_OnMouseEnter");
}
private void MyBorder_OnMouseLeave(object sender, MouseEventArgs e)
{
Debug.WriteLine("MyBorder_OnMouseLeave");
}
private void StackPanel_OnMouseEnter(object sender, MouseEventArgs e)
{
Debug.WriteLine("UIElement_OnMouseEnter");
}
private void StackPanel_OnMouseLeave(object sender, MouseEventArgs e)
{
Debug.WriteLine("UIElement_OnMouseLeave");
}
当我将鼠标悬停在边框元素 MouseEnter 上时,MouseLeave 事件会同时触发这两个事件。当鼠标离开边框 MouseEnter 时,MouseLeave 事件将再次触发。使用 stackpanel,它的行为方式符合我的预期。为什么会这样?
答:
1赞
mm8
4/5/2023
#1
如果未将 的属性设置为 ,则未绘制的区域将被视为属于父元素。Background
Border
Brush
如果将 设置为 ,事件将按预期引发:Background
Transparent
<Border Name="myBorder"
Background="Transparent"
BorderBrush="Black"
BorderThickness="2"
Width="100"
Height="100"
MouseEnter="MyBorder_OnMouseEnter"
MouseLeave="MyBorder_OnMouseLeave">
评论
Background
Border