【发布时间】:2011-12-12 16:23:05
【问题描述】:
我有一个带有多个按钮的 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.GridButtonClickHandler += btn_clicked;
我在 GridButtonClickHandler 集和 GridButtonClickPropertyChanged 方法上有断点;分配发生时第一个命中,但第二个从未命中。
看看我做错了什么?
【问题讨论】:
-
我想也许最后一个引用应该是 numpad.GridButtonClickHandler = btn_clicked,但这也没有用。