
Represents a control that allows users to inspect and edit the properties of an object.

'Declaration<TemplatePartAttribute(Name="PART_DragThumb", Type=System.Windows.Controls.Primitives.Thumb)> <StyleTypedPropertyAttribute(Property="PropertyContainerStyle", StyleTargetType=Xceed.Wpf.Toolkit.PropertyGrid.PropertyItemBase)> <XmlLangPropertyAttribute("Language")> <UsableDuringInitializationAttribute(True)> <RuntimeNamePropertyAttribute("Name")> <UidPropertyAttribute("Uid")> <TypeDescriptionProviderAttribute(MS.Internal.ComponentModel.DependencyObjectProvider)> <NameScopePropertyAttribute("NameScope", System.Windows.NameScope)> Public Class PropertyGrid Inherits System.Windows.Controls.Control
'UsageDim instance As PropertyGrid
[TemplatePart(Name="PART_DragThumb", Type=System.Windows.Controls.Primitives.Thumb)] [StyleTypedProperty(Property="PropertyContainerStyle", StyleTargetType=Xceed.Wpf.Toolkit.PropertyGrid.PropertyItemBase)] [XmlLangProperty("Language")] [UsableDuringInitialization(true)] [RuntimeNameProperty("Name")] [UidProperty("Uid")] [TypeDescriptionProvider(MS.Internal.ComponentModel.DependencyObjectProvider)] [NameScopeProperty("NameScope", System.Windows.NameScope)] public class PropertyGrid : System.Windows.Controls.Control
The PropertyGrid control allows you to autogenerate all properties by setting AutoGenerateProperties to true or to specify the specific properties you want to display by setting AutoGenerateProperties to false and then adding the properties you want to display to PropertyDefinitions.
You can use the standard editors that are provided with the PropertyGrid or you can use custom editors that target a Type, specific properties, or both.
The PropertyGrid also supports complex properties, which allows you to drill down into a nested property hierarchy.
You can supply editors for a property by using the System.ComponentModel.EditorAttribute. In order to provide an editor with an attribute, the editor MUST implement the ITypeEditor interface. Your editor can be a simple class or a complex UserControl. (See ITypeEditor for details and examples.)
PropertyGrid supports DefaultPropertyAttribute. When the SelectedObject changes, the property identified by this attribute will be the default selected property.
As of version 2.0, PropertyGrid supports the display of properties based on an IEnumerable source of items.
Based on the same pattern as the ItemsControl's ItemsSource and Items properties, you can provide an IEnumerable to PropertiesSource or directly add property items to the Properties property. Each item provided will be displayed as a distinct property. The PropertyNameBinding, PropertyValueBinding, and CategoryGroupDescription properties allow you to to control various aspects.
When preparing a PropertyItemBase instance to be displayed by the PropertyGrid, the PropertyGrid will try to create an editor for the PropertyItemBase instance unless the PropertyItemBase.Editor property is already initialized by the user (see PropertyGrid.PropertyContainerStyle property and PropertyGrid.PreparePropertyItem event).
If the Editor property is not initialized, the EditorDefinitionCollection will be consulted to determine the corresponding editor to display.
The priority of the definition keys to be used in order to find the appropriate editor for the property item is as follows:
1. The value provided by the PropertyItemBase.DefinitionKey property.
2. The value of the binding result of PropertyGrid.PropertyNameBinding applied on the underlying item.
3. The value type (e.g., value.GetType()) of the binding result of PropertyGrid.PropertyValueBinding applied on the underlying item. (A lookup based on a Type instance will recursively perform the look-up using base classes to find any matching editor definition.)
4. If PropertyGrid.PropertyValueBinding is null, the type of the underlying item. (A lookup based on a Type instance will recursively perform the look-up using base classes to find any matching editor definition.)
When no specific EditorDefinitionBase is found in the PropertyGrid.EditorDefinitions collection, the PropertyGrid will try to automatically create an appropriate editor based on the type of the value. (See default editors.)
If no appropriate editor is found, the EditorDefintionBase found in the PropertyGrid.DefaultEditorDefinition will be used.
Finally, if no editor is created, a TextBlock will be used to display the value.
The following is a list of the default editors that are automatically instantiated based on the type of the targeted property (when using SelectedObject[s]) or the type of the Value of the property (when using Properties or PropertiesSource).
- bool: CheckBox
- DateTime: DateTimeUpDown
- Color: ColorPicker
- decimal: DecimalUpDown
- double: DoubleUpDown
- float: SingleUpDown
- byte: ByteUpDown
- sbyte: SByteUpDown*
- short: ShortUpDown
- ushort: UShortUpDown*
- int: IntegerUpDown
- uint: UIntegerUpDown*
- long: LongUpDown
- ulong: ULongUpDown*
- enum: ComboBox with fields in the enumeration
- FontFamily: ComboBox populated with the available font families
- FontWeight: ComboBox populated with the possible font weights
- FontStyle: ComboBox populated with the possible font styles
- FontStretch: ComboBox populated with the possible font stretches
For CLS compliance, these editor are not available on the public API.
When using SelectedObject[s] only:
- object: TextBox
- TimeSpan: DateTimeUpDown using a converter
- IList<T>:
a) When T is one of the primitive type or a string: PrimitiveTypeCollectionControl
b) When T is NOT a primitive type or a string : CollectionEditor
These are the available built-in EditorDefintionBase-derived classes that allow you to easily customize the display the editor of the properties.
- EditorTemplateDefinition
- EditorComboBoxDefinition
- EditorCheckBoxDefinition
- EditorColorPickerDefinition
- EditorTextDefinition
- EditorDateTimeUpDownDefinition
- EditorByteUpDownDefinition
- EditorDecimalUpDownDefinition
- EditorDoubleUpDownDefinition
- EditorIntegerUpDownDefinition
- EditorLongUpDownDefinition
- EditorShortUpDownDefinition
- EditorSingleUpDownDefinition
Each editor definition has its own custom properties that allow you to easily customize the display of the represented editor. With the exception of EditorTemplateDefinition, they all provide the EditingElementStyle that allows you to style and get a more in-depth customizing scenario.
<xctk:PropertyGrid SelectedObjectName="Meeting" PropertyNameBinding="{Binding Name}" PropertyValueBinding="{Binding Department}" PropertiesSource="{Binding EmployeList}" />
<xctk:PropertyGrid SelectedObjectName="Meeting" PropertyNameBinding="{Binding Name}" PropertyValueBinding="{Binding Department}" > <xctk:PropertyGrid.Properties> <l:Employee Name="Tom" Department="Sales"/> <l:Employee Name="John" Department="Management"/> <l:Employee Name="Sean" Department="Sales"/> </xctk:PropertyGrid.Properties> </xctk:PropertyGrid>
System.Object
System.Windows.Threading.DispatcherObject
System.Windows.DependencyObject
System.Windows.Media.Visual
System.Windows.UIElement
System.Windows.FrameworkElement
System.Windows.Controls.Control
Xceed.Wpf.Toolkit.PropertyGrid.PropertyGrid
| Name | Description | |
|---|---|---|
![]() | PropertyGrid Constructor | Initializes a new instance of the PropertyGrid class. |
| Name | Description | |
|---|---|---|
![]() | ActualHeight | (Inherited from System.Windows.FrameworkElement) |
![]() | ActualWidth | (Inherited from System.Windows.FrameworkElement) |
![]() | AdvancedOptionsMenu | Gets or sets the contextual menu to use when the advanced menu button is clicked. |
![]() | AllowDrop | (Inherited from System.Windows.UIElement) |
![]() | AreAnyTouchesCaptured | (Inherited from System.Windows.UIElement) |
![]() | AreAnyTouchesCapturedWithin | (Inherited from System.Windows.UIElement) |
![]() | AreAnyTouchesDirectlyOver | (Inherited from System.Windows.UIElement) |
![]() | AreAnyTouchesOver | (Inherited from System.Windows.UIElement) |
![]() | AutoGenerateProperties | Gets or sets a value indicating whether the PropertyGrid will generate all properties for a given object. |
![]() | Background | (Inherited from System.Windows.Controls.Control) |
![]() | BindingGroup | (Inherited from System.Windows.FrameworkElement) |
![]() | BorderBrush | (Inherited from System.Windows.Controls.Control) |
![]() | BorderThickness | (Inherited from System.Windows.Controls.Control) |
![]() | CacheMode | (Inherited from System.Windows.UIElement) |
![]() | CategoryDefinitions | |
![]() | CategoryGroupDescription | Gets or sets the GroupDescription to be applied on the source items in order to define the groups when the PropertyGrid is Categorized. |
![]() | CategoryGroupHeaderTemplate | Gets or sets the DataTemplate to use to define the category headers when the propertyGrid is categorized. |
![]() | Clip | (Inherited from System.Windows.UIElement) |
![]() | ClipToBounds | (Inherited from System.Windows.UIElement) |
![]() | CommandBindings | (Inherited from System.Windows.UIElement) |
![]() | ContextMenu | (Inherited from System.Windows.FrameworkElement) |
![]() | Cursor | (Inherited from System.Windows.FrameworkElement) |
![]() | DataContext | (Inherited from System.Windows.FrameworkElement) |
![]() | DefaultEditorDefinition | Gets or sets the default editor definition to use when the property value type is not supported. |
![]() | DependencyObjectType | (Inherited from System.Windows.DependencyObject) |
![]() | DesiredSize | (Inherited from System.Windows.UIElement) |
![]() | Dispatcher | (Inherited from System.Windows.Threading.DispatcherObject) |
![]() | EditorDefinitions | Gets or sets a collection of custom editors to use in place of the default editors. |
![]() | Effect | (Inherited from System.Windows.UIElement) |
![]() | Filter | Gets or sets the filter used to filter the visible properties in the PropertyGrid. |
![]() | FilterWatermark | Gets or sets the watermark used in the filter field. |
![]() | FlowDirection | (Inherited from System.Windows.FrameworkElement) |
![]() | Focusable | (Inherited from System.Windows.UIElement) |
![]() | FocusVisualStyle | (Inherited from System.Windows.FrameworkElement) |
![]() | FontFamily | (Inherited from System.Windows.Controls.Control) |
![]() | FontSize | (Inherited from System.Windows.Controls.Control) |
![]() | FontStretch | (Inherited from System.Windows.Controls.Control) |
![]() | FontStyle | (Inherited from System.Windows.Controls.Control) |
![]() | FontWeight | (Inherited from System.Windows.Controls.Control) |
![]() | ForceCursor | (Inherited from System.Windows.FrameworkElement) |
![]() | Foreground | (Inherited from System.Windows.Controls.Control) |
![]() | HasAnimatedProperties | (Inherited from System.Windows.UIElement) |
![]() | Height | (Inherited from System.Windows.FrameworkElement) |
![]() | HideInheritedProperties | Gets or sets a value indicating if the inherited properties of the selected object will be hidden. |
![]() | HorizontalAlignment | (Inherited from System.Windows.FrameworkElement) |
![]() | HorizontalContentAlignment | (Inherited from System.Windows.Controls.Control) |
![]() | InputBindings | (Inherited from System.Windows.UIElement) |
![]() | InputScope | (Inherited from System.Windows.FrameworkElement) |
![]() | IsArrangeValid | (Inherited from System.Windows.UIElement) |
![]() | IsCategorized | Gets or sets a value indicating whether the properties displayed in the PropertyGrid are categorized. |
![]() | IsEnabled | (Inherited from System.Windows.UIElement) |
![]() | IsExpandingNonPrimitiveTypes | Gets or sets if the non-primitive types properties will be expandables to edit their sub-items directly from the PropertyGrid. Default is false. |
![]() | IsFocused | (Inherited from System.Windows.UIElement) |
![]() | IsHitTestVisible | (Inherited from System.Windows.UIElement) |
![]() | IsInitialized | (Inherited from System.Windows.FrameworkElement) |
![]() | IsInputMethodEnabled | (Inherited from System.Windows.UIElement) |
![]() | IsKeyboardFocused | (Inherited from System.Windows.UIElement) |
![]() | IsKeyboardFocusWithin | (Inherited from System.Windows.UIElement) |
![]() | IsLoaded | (Inherited from System.Windows.FrameworkElement) |
![]() | IsManipulationEnabled | (Inherited from System.Windows.UIElement) |
![]() | IsMeasureValid | (Inherited from System.Windows.UIElement) |
![]() | IsMiscCategoryLabelHidden | Gets or sets a value indicating whether the "Misc" category expander should be hidden. |
![]() | IsMouseCaptured | (Inherited from System.Windows.UIElement) |
![]() | IsMouseCaptureWithin | (Inherited from System.Windows.UIElement) |
![]() | IsMouseDirectlyOver | (Inherited from System.Windows.UIElement) |
![]() | IsMouseOver | (Inherited from System.Windows.UIElement) |
![]() | IsReadOnly | Gets or sets a value indicating whether the property grid is read-only. |
![]() | IsScrollingToTopAfterRefresh | Gets or sets if the PropertyGrid's vertical scrollViewer will scroll to top following a refresh of the PropertyItems. |
![]() | IsSealed | (Inherited from System.Windows.DependencyObject) |
![]() | IsStylusCaptured | (Inherited from System.Windows.UIElement) |
![]() | IsStylusCaptureWithin | (Inherited from System.Windows.UIElement) |
![]() | IsStylusDirectlyOver | (Inherited from System.Windows.UIElement) |
![]() | IsStylusOver | (Inherited from System.Windows.UIElement) |
![]() | IsTabStop | (Inherited from System.Windows.Controls.Control) |
![]() | IsVirtualizing | Gets or sets if the PropertyGrid is using Virtualization. Using Virtualization will load faster a SelectedObject with a large set of propertyItems, but the scrollbar thumb will estimate its size and re-adjust upon scrolling. |
![]() | IsVisible | (Inherited from System.Windows.UIElement) |
![]() | Language | (Inherited from System.Windows.FrameworkElement) |
![]() | LayoutTransform | (Inherited from System.Windows.FrameworkElement) |
![]() | Margin | (Inherited from System.Windows.FrameworkElement) |
![]() | MaxHeight | (Inherited from System.Windows.FrameworkElement) |
![]() | MaxWidth | (Inherited from System.Windows.FrameworkElement) |
![]() | MinHeight | (Inherited from System.Windows.FrameworkElement) |
![]() | MinWidth | (Inherited from System.Windows.FrameworkElement) |
![]() | Name | (Inherited from System.Windows.FrameworkElement) |
![]() | NameColumnWidth | Gets or sets the width of the property name column. |
![]() | Opacity | (Inherited from System.Windows.UIElement) |
![]() | OpacityMask | (Inherited from System.Windows.UIElement) |
![]() | OverridesDefaultStyle | (Inherited from System.Windows.FrameworkElement) |
![]() | Padding | (Inherited from System.Windows.Controls.Control) |
![]() | Parent | (Inherited from System.Windows.FrameworkElement) |
![]() | Properties | Gets the current collection of generated PropertyItem instances. |
![]() | PropertiesSource | Gets or sets the items source for the properties of the PropertyGrid. |
![]() | PropertyContainerStyle | Gets or sets the style that will be applied to all PropertyItemBase instances displayed in the property grid. |
![]() | PropertyDefinitions | Gets or sets the collection of PropertyDefinition instances. |
![]() | PropertyNameBinding | Gets or sets the Binding to be used on the property's underlying item to get the name of the property to display |
![]() | PropertyNameLeftPadding | Gets or sets the left padding of each propertyItem name in the PropertyGrid. |
![]() | PropertyNameTextWrapping | Gets or sets if text wrapping should be used for the long property names. |
![]() | PropertyValueBinding | Gets or sets the Binding to be used on the property's underlying item to get the value of the property to display. |
![]() | RenderSize | (Inherited from System.Windows.UIElement) |
![]() | RenderTransform | (Inherited from System.Windows.UIElement) |
![]() | RenderTransformOrigin | (Inherited from System.Windows.UIElement) |
![]() | Resources | (Inherited from System.Windows.FrameworkElement) |
![]() | SelectedObject | Gets or sets the current object the PropertyGrid is inspecting, |
![]() | SelectedObjectName | Gets or sets the name of the SelectedObject. |
![]() | SelectedObjects | Gets the currently selected objects the PropertyGrid is inspecting, |
![]() | SelectedObjectsOverride | Gets or sets the list of selected objects. |
![]() | SelectedObjectType | Gets or sets the Type of the SelectedObject. |
![]() | SelectedObjectTypeName | Gets or sets the name of the Type of the SelectedObject. |
![]() | SelectedProperty | Gets or sets the selected property or returns null if the selection is empty. |
![]() | SelectedPropertyItem | Gets the selected PropertyItem. |
![]() | ShowAdvancedOptions | Gets or sets a value indicating whether the advanced options button next to the properties is displayed. |
![]() | ShowDescriptionByTooltip | Gets/Sets if the Description of the PropertyItem will be displayed as a tooltip on the PART_Name of the PropertyItem. When ShowDescriptionByTooltip is True and the DescriptionAttribute on the PropertyItem is not null and not empty, it will be displayed as a tooltip. |
![]() | ShowHorizontalScrollBar | Gets or sets if the horizontal scroll bar will be visible in the PropertyGrid. |
![]() | ShowPreview | |
![]() | ShowSearchBox | Gets or sets a value indicating whether the search box is displayed. |
![]() | ShowSortOptions | Gets or sets a value indicating whether the sort options are displayed (Categorized and Alphabetical). |
![]() | ShowSummary | Gets or sets a value indicating whether the summary pane is shown. |
![]() | ShowTitle | Gets or sets a value indicating whether the PropertyGrid's title is displayed. |
![]() | SnapsToDevicePixels | (Inherited from System.Windows.UIElement) |
![]() | Style | (Inherited from System.Windows.FrameworkElement) |
![]() | TabIndex | (Inherited from System.Windows.Controls.Control) |
![]() | Tag | (Inherited from System.Windows.FrameworkElement) |
![]() | Template | (Inherited from System.Windows.Controls.Control) |
![]() | TemplatedParent | (Inherited from System.Windows.FrameworkElement) |
![]() | ToolTip | (Inherited from System.Windows.FrameworkElement) |
![]() | TouchesCaptured | (Inherited from System.Windows.UIElement) |
![]() | TouchesCapturedWithin | (Inherited from System.Windows.UIElement) |
![]() | TouchesDirectlyOver | (Inherited from System.Windows.UIElement) |
![]() | TouchesOver | (Inherited from System.Windows.UIElement) |
![]() | Triggers | (Inherited from System.Windows.FrameworkElement) |
![]() | Uid | (Inherited from System.Windows.UIElement) |
![]() | UpdateTextBoxSourceOnEnterKey | |
![]() | UseLayoutRounding | (Inherited from System.Windows.FrameworkElement) |
![]() | VerticalAlignment | (Inherited from System.Windows.FrameworkElement) |
![]() | VerticalContentAlignment | (Inherited from System.Windows.Controls.Control) |
![]() | Visibility | (Inherited from System.Windows.UIElement) |
![]() | Width | (Inherited from System.Windows.FrameworkElement) |
| Name | Description | |
|---|---|---|
![]() | FindLogicalAncestor<T> | Finds the logical ancenster |
![]() | FindLogicalAncestorsAndSelf | |
![]() | FindLogicalChildren<T> | Find the logical children. |
![]() | FindVisualAncestor<T> | Finds the visual ancestor. |
![]() | FindVisualChildren<T> | Finds the visual children. |
![]() | FindVisualTreeRoot | Finds the visual tree root. |
![]() | ShowDialog | Overloaded. |