У меня есть пользовательский элемент управления с UniformGrid, который имеет несколько кнопок. Я хочу назначить один и тот же обработчик для каждого события Click кнопки. Итак, я добавил следующее в пользовательский элемент управления:
public RoutedEventHandler GridButtonClickHandler
{
get { return ( RoutedEventHandler ) GetValue ( GridButtonClickHandlerProperty ); }
set { SetValue ( GridButtonClickHandlerProperty, value ); }
}
public static readonly DependencyProperty GridButtonClickHandlerProperty =
DependencyProperty.Register ( "GridButtonClickHandler", typeof ( RoutedEventHandler ), typeof ( UniformGrid ),
new PropertyMetadata ( GridButtonClickPropertyChanged ) );
private static void GridButtonClickPropertyChanged ( DependencyObject o, DependencyPropertyChangedEventArgs e )
{
( ( UniformGrid ) o ).Children.OfType<Button> ( ).ToList ( ).ForEach ( b => b.Click += ( RoutedEventHandler ) e.NewValue );
}
Затем, где-то, где есть ссылка на пользовательский элемент управления (в данном примере numpad), у меня есть это:
numpad.GridButtonClickHandler += btn_clicked;
У меня есть точки останова для набора GridButtonClickHandler и метода GridButtonClickPropertyChanged; первые ударяются, когда происходит назначение, но вторые никогда не ударяются.
Видишь, что я делаю не так?