コード例 #1
0
        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);
                }
            }
        }