2015-02-24 5 views
5

Ich lese C# WPF Buch und in Routingereignisse Kapitel, Ereignis hat 2 gleiche Eigenschaften Source und OriginalSource. Ich habe nicht den Unterschied zwischen ihnen:Ereignisquelle vs Originalquelle

XAML:

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

-Code hinter:

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

und flag Eigenschaft true hier können einige man sich, warum zwei gleiche Eigenschaft erklären oder in diesem Fall hat diese Eigenschaften keine Auswirkungen? oder wo können wir Anwendungsfall für diese Eigenschaften sehen?

Antwort

9

Ein Steuerelement kann andere Steuerelemente als untergeordnete Elemente enthalten. Wenn Sie ein Ereignis über das Steuerelement abonnieren, ist das übergeordnete Mitglied wahrscheinlich die e.Source. Wenn das Steuerelement jedoch untergeordnete Elemente enthält und das untergeordnete Element das Ereignis ausgelöst hat, wird OriginalSource das untergeordnete Element sein, das das Ereignis ausgelöst hat.

Ein häufiger Anwendungsfall ist das Abonnieren des KeyDown-Ereignisses auf einem DataGrid. Die Quelle kann das Gitter sein, aber die ursprüngliche Quelle könnte die Zelle (oder eine Komponente in der Zelle) sein

Verwandte Themen