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选择对象的改变。

  • 相关阅读:
    119. Pascal's Triangle II
    118. Pascal's Triangle
    112. Path Sum
    111. Minimum Depth of Binary Tree
    110. Balanced Binary Tree
    108. Convert Sorted Array to Binary Search Tree
    88. Merge Sorted Array
    83. Remove Duplicates from Sorted List
    70. Climbing Stairs
    陌陌面试经历
  • 原文地址:https://www.cnblogs.com/runningRain/p/13714502.html
Copyright © 2011-2022 走看看