Используя рефлектор, вы можете видеть, что WPF UserControl переопределяет AdjustBranchSource.
internal override void AdjustBranchSource(RoutedEventArgs e)
{
e.Source = this;
}
Моя собственная проблема касается несоответствия, вызванного этой проблемой. Когда элемент находится внутри пользовательского элемента управления или снаружи. Параметр Source ведет себя иначе. Что меня удивляет, источник всегда должен быть элементом цели RoutedEvent.
Вопрос в том, почему это реализовано именно так?