我正在创建从 ItemsControl 派生的自定义 DataGrid 。我需要访问 ItemsHost ,它是实际保存 Panel 行的 DataGrid 。我见过一些丑陋的技巧来做到这一点,但我认为它们比使用反射更糟糕。
那么我可以使用反射访问 ItemsHost 吗?如何 ?

最佳答案

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

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

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

关于c# - 我可以使用反射访问 ItemsControl 的 ItemsHost 吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5056728/

10-11 00:47