可自动为模型对象中的属性生成与之相匹配的编辑器集合.
1 | [] |
属性
| 属性 | 描述 | 默认值 | 备注 |
|---|---|---|---|
| PropertyResolver | 属性解析器 | new PropertyResolver | |
| SelectedObject | 模型对象 | ||
| Description | 描述 | ||
| MaxTitleWidth | 最大标题宽度 | 0 | |
| MinTitleWidth | 最小标题宽度 | 0 |
自带编辑器
| 名称 | 说明 |
|---|---|
| DatePropertyEditor | 日期编辑器 |
| DateTimePropertyEditor | 日期时间编辑器 |
| EnumPropertyEditor | 枚举编辑器 |
| HorizontalAlignmentPropertyEditor | 水平对齐方式编辑器 |
| ImagePropertyEditor | 图片编辑器 |
| NumberPropertyEditor | 数字编辑器 |
| PlainTextPropertyEditor | 纯文本编辑器 |
| ReadOnlyTextPropertyEditor | 只读文本编辑器 |
| SwitchPropertyEditor | 布尔编辑器(开关风格) |
| TimePropertyEditor | 时间编辑器 |
| VerticalAlignmentPropertyEditor | 垂直对齐方式编辑器 |
事件
| 名称 | 说明 |
|---|---|
| SelectedObjectChanged | 当模型对象改变时触发 |
案例
基础用法
1 | public class PropertyGridDemoModel |
1 | DemoModel = new PropertyGridDemoModel |
1 | <hc:PropertyGrid Width="500" SelectedObject="{Binding DemoModel}"/> |

自定义编辑器
我们以 PlainTextPropertyEditor 为例,当需要自定义编辑器,我们可以从 PropertyEditorBase 继承,并重写某些方法,这些方法的定义如下表所示:
| 名称 | 说明 | 备注 |
|---|---|---|
| CreateElement | 创建具体操作控件 | 必须重写 |
| CreateBinding | 为具体操作控件创建数据绑定 | |
| GetDependencyProperty | 获取具体操作控件中需要绑定的依赖属性 | 必须重写 |
| GetBindingMode | 获取绑定模式 | |
| GetUpdateSourceTrigger | 获取更新数据源的触发模式 | |
| GetConverter | 获取绑定时需要使用的转换器 |
纯文本编辑器的具体操作控件可以是 TextBox:
1 | public override FrameworkElement CreateElement(PropertyItem propertyItem) => new System.Windows.Controls.TextBox |
需要绑定的依赖属性应该是 TextProperty:
1 | public override DependencyProperty GetDependencyProperty() => System.Windows.Controls.TextBox.TextProperty; |
最后整体的代码如下:
1 | public class PlainTextPropertyEditor : PropertyEditorBase |