我可以使用反射访问ItemsHtrol的ItemsHtrol吗?

Ras*_*sto 4 c# reflection wpf datagrid wpf-controls

我正在创建ItemsControl源自的自定义DataGrid.我需要访问Panel实际持有行的ItemsHost DataGrid.我已经看到了那些丑陋的伎俩,但我认为它们比使用反射更糟糕.那么我可以使用反射访问ItemsHost吗?如何 ?

Ras*_*sto 5

我可以.这很简单 - 我刚才在继承的类中创建了属性DataGrid:

protected Panel ItemsHost {
    get {
        return (Panel) typeof (MultiSelector).InvokeMember("ItemsHost",
            BindingFlags.NonPublic | BindingFlags.GetProperty | BindingFlags.Instance,
            null, this, null);
    }
}
Run Code Online (Sandbox Code Playgroud)

它就像一个魅力:).我可以得到类的ItemsHost内部属性的值ItemsControl.这样我就可以访问任何不受保护的属性.