我有一个 UserControl,我试图将事件处理程序从父控件连接到。我想尽可能少地编写代码并且遇到了一些问题。这是我的设置:
在我后面的 NewUserControl 代码中:
public RoutedEventHandler PrintClickHandler { get; set; }
public DependencyProperty PrintClickHandlerProperty =
DependencyProperty.Register("PrintClickHandler", typeof(RoutedEventHandler),
typeof(NewUserControl), new PropertyMetadata(null));
在 MyParentControl 我有:
public RoutedEventHandler PrintClickHandler
{
get { return btnPrintCall_Click; }
}
private void btnPrintCall_Click(object sender, RoutedEventArgs e)
{
// some code
}
最后在 MyParentControls xaml 我有 NewUserControl.PrintClickHandler 的绑定:
<NewUserControl PrintClickHandler="{Binding Path=PrintClickHandler,
RelativeSource={RelativeSource AncestorType=local:MyParentControl, AncestorLevel=1}}" />
现在在调试器中,我可以实现所有 getter 和 setter,这是在调用它们时命中断点的经典方法。我看到 MyParentControl.PrintClickHandler 的 getter 被击中,但 NewUserControl.PrintClickHandler 的 setter 从未被击中。我在输出中也没有与此绑定相关的错误或警告。