沿着Visual Tree传递

内置路由事件

方法一:在XAML里面给元素添加路由事件

  1. <StackPanel ButtonBase.Click="btn_Click">
  2. <Button x:Name="btn"/>
  3. <TextBox x:Name="txt"/>
  4. <TextBox x:Name="txt2"/>
  5. </StackPanel>
  1. private void btn_Click(object sender, RoutedEventArgs e) {
  2. MessageBox.Show((e.OriginalSource as FrameworkElement).Name);
  3. }

方法二:在C#代码中添加路由事件

  1. public MainWindow() {
  2. InitializeComponent();
  3. this.stp1.AddHandler(ButtonBase.ClickEvent, new RoutedEventHandler(this.btn_Click));
  4. }
  5. private void btn_Click(object sender, RoutedEventArgs e) {
  6. MessageBox.Show((e.OriginalSource as FrameworkElement).Name);
  7. }

image.png

自定义路由事件