事件源vs原始源

Jam*_*ack 8 c# wpf events xaml

我正在阅读C#WPF书和路由事件章节,事件有2个相同的属性SourceOriginalSource.我没有看到它们之间的区别:

XAML:

<Button Name="Ok" Click="Ok_Click"/>
Run Code Online (Sandbox Code Playgroud)

代码背后:

private void Ok_Click(object sender, RoutedEventArgs e)
{
        bool flag = false;
        var source = e.Source;
        var originalSource = e.OriginalSource;
        if (source == originalSource)
        {
            flag = true;
        }
}
Run Code Online (Sandbox Code Playgroud)

flag属性true在这里,有人可以解释为什么2相同的属性或在这种情况下这个属性没有影响?或者我们在哪里可以看到这个属性的用例?

Sco*_*ain 13

控件可以在其中包含其他控件作为子控件.当您从控件订阅一个事件时,您订阅的父级可能是,e.Source但如果控件具有子级并且子级是引发该事件OriginalSource的子级,那么将是引发该事件的子级.

一个常见的用例是KeyDown在a上订阅该事件DataGrid.源可以是网格,但原始源可能是单元格(或单元格中的某个组件)