A>Суть такая — Проперть Site пропертигриду назначает кто-то извне. При назначении этой проперти он запрашивает у этого ISite`а сервиспровайдера. почти как в примере, только сервис — IServiceProvider. Экземпляр он сохраняет и за различными интерфейсами обращается к нему. в том числе и за IPropertyValueUIService. A>Таким образом, есть два пути подставить пропертигриду собственною реализацию IPropertyValueUIService: A>- присвоить ему нестандартное значение Site. такое, чтобы оно вернуло твой ServiceProvider. тогда пропертигрид возьмет то что нужно самостоятельно. A>- достать через Reflection внутреннее поле, в котором живет сервиспровайдер и назначить его, минуя Site.
В design-time все работает отлично, а в runtime, imho оно заработать не сможет, так этот кто-то, кто назначает PropertyGrid.Site и поддерживает IPropertyValueUIService, это DesignHost, а runtime его просто нет, если конечно с нуля не реализовать, или подключить Microsoft.VisualStudio.dll. По моему так.