c# - 事件源与原始源

标签 c# wpf xaml events

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

Xaml:

<Button Name="Ok" Click="Ok_Click"/>

代码隐藏:

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

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

最佳答案

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

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

关于c# - 事件源与原始源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28688686/

相关文章:

c# - System.Windows.Media.RenderCapability.Tier 返回的不是渲染模式

c# - Click 事件的 XAML 参数

c# - WPF:从 Dispatcher 修改 CollectionView 仍然会引发错误

c# - StackPanel 可见性取决于 Combobox 选择

.net - WPF基于属性更改键绑定(bind)的绑定(bind)命令?

c# - 拆分成一个数组

Javascript 从后面的 C# 代码中读取公共(public)变量

c# - ASP.NET MVC 应用程序有 SecurityException

c# - 委托(delegate)操作 : new Action or casting Action?

wpf - 按钮可见性绑定(bind)不更新