可自动为模型对象中的属性生成与之相匹配的编辑器集合.
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 |