ToB企服应用市场:ToB评测及商务社交产业平台

标题: 在WPF程序中实现PropertyGrid功能 [打印本页]

作者: 曹旭辉    时间: 2024-11-22 23:51
标题: 在WPF程序中实现PropertyGrid功能
使用C#开发过Windows Forms的都知道,在Windows Forms程序中,有一个PropertyGrid控件,可以用于显示对象的属性,在WPF中并没有默认提供此功能的控件,本日以一个简单的小例子,简述在WPF中借助WinForm的PropertyGrid实现属性列表功能,仅供学习分享使用,如有不足之处,还请指正。
涉及知识点

PropertyGrid简介

PropertyGrid最常用属性,如下所示:
除了上述两个最常用属性,PropertyGrid还有其他属性,如下所示:
PropertyGrid支持的对象属性注解,如下所示:
通过上述注解,可以显示属性在PropertyGrid中的阐明或者其他内容。
PropertyGrid控件目前支持.NET Framework和Windows Desktop版本,如下所示:

开发步骤

1. 查抄类库

起首查抄项目中是否引用【Microsoft.WindowsDesktop.App】框架,在此框架中,会包含【System.Windows.Forms】,若没有,需要手动添加,如下图所示:

2. 引用定名空间

在项目中需要添加PropertyGrid的页面,添加System.Windows.Forms定名空间,如下所示:
  1. [/code][size=5]3. 添加PropertyGrid控件[/size]
  2. 由于PropertyGrid是Winodws Forms中的控件,并不能在WPF中直接使用,需要托管到WindowsFormsHost中才气正确显示,如下所示:
  3. [code]<Grid>
  4.     <Grid.ColumnDefinitions>
  5.         <ColumnDefinition></ColumnDefinition>
  6.         <ColumnDefinition></ColumnDefinition>
  7.     </Grid.ColumnDefinitions>
  8.     <Button x:Name="btnHelloWorld" Content="Click Say Hello World"
  9.             Width="150" Height="30" Click="btnHelloWorld_Click"></Button>
  10.     <WindowsFormsHost Grid.Column="1" Margin="18,12,0,0" Name="windowsFormsHost1" VerticalAlignment="Top">
  11.         <winfm:PropertyGrid x:Name="propertyGrid"></winfm:PropertyGrid>
  12.     </WindowsFormsHost>
  13. </Grid>
复制代码
4. 设置对象

通过SelectedObject属性为PropertyGrid赋值,由于PropertyGrid属性并不是WPF中的依赖对象,所以不能举行绑定,但可以通过后台C#代码举行赋值。如下所示:
定义测试类Person
  1. public class Person
  2. {
  3.     [Category("Person")]
  4.     [DisplayName("标识")]
  5.     [Description("唯一标识")]
  6.     public int Id { get; set; }
  7.     [Category("Person")]
  8.     [DisplayName("名称")]
  9.     [Description("名称")]
  10.     public string Name { get; set; }
  11.     [Category("Person")]
  12.     public string Title { get; set; }
  13.     [Category("Person")]
  14.     public string Description { get; set; }
  15.     [Category("Person")]
  16.     public int Age { get; set; }
  17. }
复制代码
 声明Person对象并赋值给PropertyGrid,如下所示:
  1. public MainWindow()
  2. {
  3.     InitializeComponent();
  4.     var p = new Person
  5.     {
  6.         Id = 1,
  7.         Name = "老码识途",
  8.         Age = 20,
  9.         Description = "这是一个人",
  10.         Title = "老码识途作者"
  11.         };
  12.     this.propertyGrid.SelectedObject = p;
  13. }
复制代码
实例演示

通过上述步骤,就可以实现PropertyGrid属性框的功能,本例将Person的作为要显示属性的对象赋值给PropertyGrid,如下所示:
 

 注意,如果没有为属性设置Category,则默以为Misc。
以上就是《在WPF程序中实现PropertyGrid功能》的全部内容,旨在抛砖引玉,一起学习,共同进步。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4