zoukankan      html  css  js  c++  java
  • WPF中实现PropertyGrid的三种方式

    原文地址: https://www.cnblogs.com/zhuqil/archive/2010/09/02/Wpf-PropertyGrid-Demo.html

    第一种方式:使用WindowsForm的PropertyGrid控件。

         用过WPF的童鞋都晓得,可以通过WindowsFormsHost将WindowsForm的控件宿主到WPF中使用。很简单,分为简单的3步。

         第一步:引用dll:在WPF应用程序中引入System.Windows.Forms.dll。

         第二步:引用命名空间:在窗体的.cs代码中引用此命名空间:using System.Windows.Forms;在XAML中引用此命名空间代码如下:

    xmlns:my="clr-namespace:System.Windows.Forms;assembly=System.Windows.Forms"

    第三步:通过WindowsFormsHost使用PropertyGrid控件。

    <WindowsFormsHost Height="287" HorizontalAlignment="Left" Margin="18,12,0,0" Name="windowsFormsHost1" VerticalAlignment="Top" Width="200">
    <my:PropertyGrid x:Name="PropertyGrid1"></my:PropertyGrid> 
    </WindowsFormsHost>

    第二种方式:自定义WPF控件。这里以codeplex上的一个开源控件为例。如果你想知道实现的细节,可以到http://wpg.codeplex.com/上下载代码学习。

    使用方式很简单。由于它是WPF控件,所以不需要使用WindowsFormsHost。

    <Window x:Class="WPGDemoApp.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:wpg="clr-namespace:WPG;assembly=WPG"
    Title="Window1" Height="300" Width="300">
    <DockPanel VerticalAlignment="Stretch">
    <Button DockPanel.Dock="Top" x:Name="btn">button for test</Button>
    <wpg:PropertyGrid DockPanel.Dock="Top" Instance="{Binding ElementName=btn}" VerticalAlignment="Stretch" IsEnabled="True"></wpg:PropertyGrid>
    </DockPanel>
    </Window>

     第三种方式:使用WF4.0设计器里面的属性框控件。WF4.0的流程设计器有一个这样的PropertyGrid控件。我们利用它来实现自己的PropertyGrid控件。这也是本文重点介绍的方式。参考:Native WPF 4 PropertyGrid。分五个步骤去实现。

    1、自定义一个用户控件,这个控件继承Grid类。grid将包含真正的界面元素。

    2、用Workflow Foundation的WorkflowDesigner一个对象作为这个控件的私有成员。

    3、对于需要设计的对象,在grid中添加一个PropertyInspectorView对象的子元素。对外它是一个Grid,其实它的类型是ProperyInspector。

    4、通过反射获取和使用PropertyInspector的一些方法。

    5、实现一个SelectedObject属性,标准的PropertyGrid都有它。用来处理PropertyInspector选择对象的改变。

  • 相关阅读:
    VMware Workstation 6.0 正式版公布
    KMyMoney:全体理财好管家
    Bugzilla 3.0 公布
    Brightside:切换工作区的小东西
    QTM-Blogging 客户端
    MDF2ISO-将 MDF 转换为 ISO
    Yakuake 2.8 beta1
    Red Hat 的 Liberation 字体
    Dictman:有效的词典呆板人
    digiKam 0.9.2 Beta 1
  • 原文地址:https://www.cnblogs.com/runningRain/p/13714502.html
Copyright © 2011-2022 走看看