PropertyGridControl.PropertyDefinitionTemplateSelector Property
Gets or sets an object that chooses a property definition template based on custom logic. This is a dependency property.
Namespace: DevExpress.Xpf.PropertyGrid
Assembly: DevExpress.Xpf.PropertyGrid.v24.2.dll
NuGet Package: DevExpress.Wpf.PropertyGrid
#Declaration
public DataTemplateSelector PropertyDefinitionTemplateSelector { get; set; }
#Property Value
Type | Description |
---|---|
Data |
A Data |
#Remarks
A template that defines the presentation of property definitions is specified by the PropertyGridControl.PropertyDefinitionTemplate property. If you have more than one template that can be used to render property definitions, you can implement custom logic to choose the required template. To do this, derive from the DataTemplateSelector class, implement the SelectTemplate method that returns a template which meets the required condition, and assign it to the PropertyDefinitionTemplateSelector property.
<Window.Resources>
<local:PropertyDefinitionTemplateSelector x:Key="PropertyDefinitionTemplateSelector"/>
<DataTemplate x:Key="PropertyTemplate">
<dxprg:PropertyDefinition Path="{Binding Name}" />
</DataTemplate>
<DataTemplate x:Key="CollectionTemplate">
<dxprg:CollectionDefinition Path="{Binding CollectionName}" />
</DataTemplate>
</Window.Resources>
<Grid>
<dxprg:PropertyGridControl SelectedObject="{Binding EditObject}"
PropertyDefinitionsSource="{Binding Properties}"
PropertyDefinitionTemplateSelector="{StaticResource PropertyDefinitionTemplateSelector}"
ShowProperties="WithPropertyDefinitions"
ExpandCategoriesWhenSelectedObjectChanged="True"/>
</Grid>
using System.Windows;
using System.Windows.Controls;
namespace WpfApplication1 {
public class PropertyDefinitionTemplateSelector : DataTemplateSelector {
public override DataTemplate SelectTemplate(object item, DependencyObject container) {
Property propDef = (Property)item;
FrameworkElement element = (FrameworkElement)container;
if(!string.IsNullOrEmpty(propDef.CollectionName)) {
return element.TryFindResource("CollectionTemplate") as DataTemplate;
}
return element.TryFindResource("PropertyTemplate") as DataTemplate;
}
}
}
Note
Both the Property
Refer to the following help topic for more information: Appearance Customization.