.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
类中访问