private static void InitializePropertyItem(PropertyItem propertyItem, IPropertyDefinition pd) { propertyItem.ChildrenDefinitions = pd.ChildrenDefinitions; // Assign a shorter name, for code clarity only. PropertyGridUtilities.SetupDefinitionBinding(propertyItem, PropertyItem.DisplayNameProperty, pd, () => pd.DisplayName); PropertyGridUtilities.SetupDefinitionBinding(propertyItem, PropertyItem.DescriptionProperty, pd, () => pd.Description); PropertyGridUtilities.SetupDefinitionBinding(propertyItem, PropertyItem.CategoryProperty, pd, () => pd.Category); PropertyGridUtilities.SetupDefinitionBinding(propertyItem, PropertyItem.PropertyOrderProperty, pd, () => pd.DisplayOrder); PropertyGridUtilities.SetupDefinitionBinding(propertyItem, PropertyItem.AdvancedOptionsIconProperty, pd, () => pd.AdvancedOptionsIcon); PropertyGridUtilities.SetupDefinitionBinding(propertyItem, PropertyItem.AdvancedOptionsTooltipProperty, pd, () => pd.AdvancedOptionsTooltip); PropertyGridUtilities.SetupDefinitionBinding(propertyItem, PropertyItem.IsExpandableProperty, pd, () => pd.IsExpandable); Binding valueBinding = new Binding("Value") { Source = pd, Mode = BindingMode.TwoWay }; propertyItem.SetBinding(PropertyItem.ValueProperty, valueBinding); propertyItem.Editor = pd.GenerateEditorElement(propertyItem); if (pd.CommandBindings != null) { foreach (CommandBinding commandBinding in pd.CommandBindings) { propertyItem.CommandBindings.Add(commandBinding); } } }