我有一個用戶控件與一個UniformGrid有一些按鈕。我想爲每個Button的Click事件分配相同的處理程序。所以,添加以下到用戶控件:DependencyProperty PropertyChangedCallback接線
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.GridButtonClickHandler += btn_clicked;
我有GridButtonClickHandler集合中的斷點和GridButtonClickPropertyChanged方法;第一次擊中分配發生時,但第二次未擊中。
看看我做錯了什麼?
我想也許最後的引用應該是numpad.GridButtonClickHandler = btn_clicked,但那也沒有工作。 –