【问题标题】:WPF Event Not Bubbling to the WIndowWPF 事件不会冒泡到窗口
【发布时间】:2021-08-07 16:03:58
【问题描述】:

这是 C# 代码:

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
    }
    private void Button_Click(object sender, RoutedEventArgs e)
    {
        
        txt1.Text = "Button is Clicked";
    }

    private void StackPanel_Click(object sender, RoutedEventArgs e)
    {
        txt2.Text = "Click event is bubbled to Stack Panel";
    }

    private void Window_Click(object sender, RoutedEventArgs e)
    {
        txt3.Text = "Click event is bubbled to Window";
    }
}

这是 WPF 代码:

 <Grid>
    <StackPanel Margin = "20" ButtonBase.Click = "StackPanel_Click">

        <StackPanel Margin = "10">
            <TextBlock Name = "txt1" FontSize = "18" Margin = "5" Text = "This is a TextBlock 1" />
            <TextBlock Name = "txt2" FontSize = "18" Margin = "5" Text = "This is a TextBlock 2" />
            <TextBlock Name = "txt3" FontSize = "18" Margin = "5" Text = "This is a TextBlock 3" />
        </StackPanel>

        <Button Margin = "10" Content = "Click me" Click = "Button_Click" Width = "80"/>
    </StackPanel>
</Grid>

当我单击按钮时,应用程序会报告按钮和堆栈面板单击事件,但不会报告窗口。为什么?

【问题讨论】:

  • 显示您如何将事件连接到窗口。

标签: wpf click event-bubbling


【解决方案1】:

为什么?

因为您没有为窗口附加任何处理程序。您可以在构造函数中以编程方式执行此操作:

public MainWindow()
{
    InitializeComponent();
    AddHandler(System.Windows.Controls.Primitives.ButtonBase.ClickEvent, 
        new RoutedEventHandler(Window_Click));
}

...或在 XAML 标记中:

<Window x:Class="WpfApp1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        mc:Ignorable="d"
        Title="Window32" Height="450" Width="800
        ButtonBase.Click="Window_Click">

【讨论】:

    猜你喜欢
    • 2011-04-28
    • 2017-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多