我正在阅读C# WPF的书,在路由事件一章中,事件具有两个相同的属性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
property true
这里,有人能解释为什么两个相同的属性或者在这种情况下这个属性没有影响吗?或者我们在哪里可以看到这个属性的用例?
发布于 2015-02-24 05:52:04
控件可以作为子控件在其中具有其他控件。当您从控件订阅一个事件时,您订阅的父控件很可能是e.Source
,但是,如果该控件有子控件,并且该子控件是引发该事件的子控件,则OriginalSource
将是引发该事件的子控件。
一个常见的用例是在一个KeyDown
上订阅DataGrid
事件。源可能是网格,但原始源可能是单元(或单元格中的某些组件)。
https://stackoverflow.com/questions/28688686
复制相似问题