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

时间:2011-02-20 11:28:01

标签: c# wpf reflection datagrid wpf-controls

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

1 个答案:

答案 0 :(得分:5)

是的,我可以。这很简单 - 我刚刚在继承自DataGrid的类中创建了属性:

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

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