我不明白它是什么以及何时使用它。 MSDN没有帮助我。 MSDN声明ICustomTypeDescriptor提供一个为对象提供动态自定义类型信息的接口。
答案 0 :(得分:9)
有许多资源可用于显示ICustomTypeDescriptor
界面的不同用例,但简而言之,典型的用例是提供标准TypeDescriptor
提供的自定义类型说明。很少实现该接口,而无需返回自定义成员描述符,例如自定义PropertyDescriptor
。
Type Descriptor Overview from the MSDN是一个很好的资源,可能有助于进一步明确目的和用法。
答案 1 :(得分:0)
在MVVM中,您应该将ViewModels创建为普通的C#类,以暴露可以绑定到控件的属性,并可能在更改属性值时实现INotifyPropertyChanged
来发布通知,以便绑定的控件可以注意到。 WPF将使用反射来发现ViewModel类的属性。
但是,可以想到您可能不希望WPF使用反射来发现对象的属性。可以想象,您的ViewModel甚至可能没有实现C#属性,而是可能使用其他某种机制公开命名的值。例如,您可以构建一个通用的ViewModel,它包含一个填充了命名值的IDictionary<string,object>
。如果ICustomTypeDescriptor
不存在,则将无法执行此操作。 ICustomTypeDescriptor
告诉WPF不要使用反射来发现ViewModel的属性,而是通过调用ICustomTypeDescriptor
接口的方法来发现它们。
可以在这里找到更多内容:https://docs.microsoft.com/en-us/archive/msdn-magazine/2005/april/net-matters-icustomtypedescriptor-part-1