我终于在 PropertyGrid.EditorDefinitions 中找到了使用 DataTemplate 的方法。在下面的示例中,每个 Double 类型的属性都有一个格式为“F2”的“DoubleUpDown”编辑器。
xmlns:System="clr-namespace:System;assembly=mscorlib"
xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit"
<xctk:PropertyGrid ...>
<xctk:PropertyGrid.EditorDefinitions>
<xctk:EditorTemplateDefinition>
<xctk:EditorTemplateDefinition.TargetProperties>
<xctk:TargetPropertyType Type="{x:Type System:Double}" />
</xctk:EditorTemplateDefinition.TargetProperties>
<xctk:EditorTemplateDefinition.EditingTemplate>
<DataTemplate>
<xctk:DoubleUpDown FormatString="F2"
Value="{Binding Value, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
</DataTemplate>
</xctk:EditorTemplateDefinition.EditingTemplate>
</xctk:EditorTemplateDefinition>
</xctk:PropertyGrid.EditorDefinitions>
</xctk:PropertyGrid>
通过在EditorTemplateDefinition.TargetProperties 中命名特定的属性,只有这些属性会受到后面的DataTemplate 的影响。
<xctk:EditorTemplateDefinition.TargetProperties>
<System:String>Volume</System:String>
<System:String>Weight</System:String>
</xctk:EditorTemplateDefinition.TargetProperties>