gpt4 book ai didi

c# - 为什么按钮单击事件 "bubble up visual tree"不按 MSDN 文章所述发送到 StackPanel?

转载 作者:IT王子 更新时间:2023-10-29 04:33:17 26 4
gpt4 key购买 nike

在 MSDN 文章 Understanding Routed Events and Commands In WPF 中,它指出

an event will bubble (propagate) up the visual tree from the source element until either it has been handled or it reaches the root element.

但是,在此示例中,当您单击按钮时,它不会“冒泡可视化树”以由父级 StackPanel 事件处理,即单击按钮不会触发任何事件.

为什么不呢? 如果不是这个,他们所说的“冒泡”是什么意思

XAML:

<Window x:Class="TestClickEvents456.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="300" Width="300">
<StackPanel x:Name="TheStackPanel"
Background="Yellow"
MouseDown="TheStackPanel_MouseDown">
<Button x:Name="TheButton"
Margin="10"
Content="Click This"/>
<TextBlock x:Name="TheMessage"
Text="Click the button or the yellow area"/>
</StackPanel>
</Window>

代码隐藏:

using System.Windows;
using System.Windows.Input;

namespace TestClickEvents456
{
public partial class Window1 : Window
{
public Window1()
{
InitializeComponent();
}

private void TheStackPanel_MouseDown(object sender, MouseButtonEventArgs e)
{
TheMessage.Text = "StackPanel was clicked.";
}

}
}

最佳答案

事件冒泡,直到它被处理...

由于 Button 会根据您的鼠标点击执行某些操作,因此它会吸收您的鼠标事件并将其转换为 ClickEvent。

如果您使用 PreviewMouseDown,您会看到 StackPanel 在按钮之前首先接收到事件。预览事件使用 Tunnel down 方法。

关于c# - 为什么按钮单击事件 "bubble up visual tree"不按 MSDN 文章所述发送到 StackPanel?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/662201/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com