我正在创建源自ItemsControl
的自定义DataGrid
。我需要访问实际拥有Panel
行的DataGrid
ItemsHost。我已经看到了那些丑陋的伎俩,但我认为它们比使用反射更糟糕。
那么我可以使用反射访问ItemsHost吗?怎么样?
答案 0 :(得分:5)
是的,我可以。这很简单 - 我刚刚在继承自DataGrid
的类中创建了属性:
protected Panel ItemsHost {
get {
return (Panel) typeof (MultiSelector).InvokeMember("ItemsHost",
BindingFlags.NonPublic | BindingFlags.GetProperty | BindingFlags.Instance,
null, this, null);
}
}
它就像一个魅力:)。我可以获得ItemsHost
类的ItemsControl
内部属性的值。这样我就可以访问任何不受保护的属性。