2015-02-24 12 views
5

Tôi đang đọc sách C# WPF và trong các sự kiện được định tuyến chương, sự kiện có 2 thuộc tính giống nhau SourceOriginalSource. Tôi không thấy sự khác biệt giữa chúng:Nguồn sự kiện so với nguồn gốc

XAML:

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

Mã đằng sau:

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 tài sản true đây, một số ai có thể giải thích tại sao 2 thuộc tính giống nhau hoặc trong trường hợp này thuộc tính này không có tác dụng? hoặc chúng ta có thể thấy trường hợp sử dụng cho thuộc tính này ở đâu?

Trả lời

9

Điều khiển có thể có các điều khiển khác bên trong đó là trẻ em. Khi bạn đăng ký một sự kiện từ kiểm soát mà phụ huynh bạn đã đăng ký có thể là e.Source, tuy nhiên, nếu kiểm soát có con và đứa trẻ là người đã tăng sự kiện thì OriginalSource sẽ là đứa trẻ đã phát sinh sự kiện.

Trường hợp sử dụng phổ biến là đăng ký sự kiện KeyDown trên DataGrid. Nguồn có thể là lưới nhưng nguồn gốc có thể là ô (hoặc một số thành phần trong ô)

Các vấn đề liên quan