我正在阅读 C# WPF 书籍和路由事件章节,事件具有 2 个相同的属性 Source
和 OriginalSource
。我没有看出它们之间的区别:
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/