.net Can';无法从DataContextChanged获取调用列表
为什么第二行的.net Can';无法从DataContextChanged获取调用列表,.net,wpf,delegates,.net,Wpf,Delegates,为什么第二行的GetInvocationList()没有编译? DataContextChanged事件声明为与MyDataContextChanged相同 public partial class TestControl : UserControl { public event DependencyPropertyChangedEventHandler MyDataContextChanged; public TestControl() { Initi
GetInvocationList()
没有编译?
DataContextChanged
事件声明为与MyDataContextChanged
相同
public partial class TestControl : UserControl
{
public event DependencyPropertyChangedEventHandler MyDataContextChanged;
public TestControl()
{
InitializeComponent();
var invocationList = MyDataContextChanged.GetInvocationList();
//var invocationList = DataContextChanged.GetInvocationList(); NotWorking
}
编译器将
公共事件
转换为私有
委托支持字段和公共
添加
和删除
方法
因此,在声明类之外,您只能使用事件来添加或删除处理程序(通过+=
和-=
操作符)。但您无法访问支持字段
要调用GetInvocationList()
您需要访问委托字段,但这是private
因此,您可以为自己的MyDataContextChanged
调用GetInvocationList()
,因为它的支持字段是您自己的TestControl
类中的private
DataContextChanged
事件的备份字段是TestControl
基类中的private
(不确定是UserControl
还是更高层次结构)。因此,您无法从派生的TestControl
类中访问