簡體   English   中英

WPF內部:為什么UserControl會覆蓋AdjustBranchSource?

[英]WPF internal : Why UserControl is overriding AdjustBranchSource?

通過使用反射器,您可以看到WPF UserControl覆蓋了AdjustBranchSource。

    internal override void AdjustBranchSource(RoutedEventArgs e)
{

   e.Source = this;

}

我自己的問題是由該問題引起的不一致。 當元素位於用戶控件內部或外部時。 Source參數的行為有所不同。 令我驚訝的是,源始終應該是RoutedEvent的目標元素。

問題是為什么要這樣實施?

這有點道理。 如果將UserControl視為黑匣子,則不應該知道控件上有哪些控件,因此也不知道事件的來源。

如果需要區分UserControl上的不同按鈕,則UserControl應該具有按鈕觸發的自己的事件。 從外部看,這種方式看起來像是正確的事件,而UserControl的用戶不需要知道哪個按鈕執行了哪個事件。

舉個例子,在列表框中,您是否需要知道向下滾動按鈕是發送原始事件的按鈕? 還是只需要知道觸發了向下滾動事件。

路由事件的來源可以在事件的整個路由過程中更改。 我不能完全確定為什么UserControl更改它,但是您不能只使用RoutedEventArgsOriginalSource屬性嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM