最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

WPF實(shí)現(xiàn)PropertyGrid功能

 更新時(shí)間:2024年11月25日 09:08:09   作者:老碼識(shí)途呀  
這篇文章主要為大家詳細(xì)介紹了在WPF中如何借助WinForm的PropertyGrid實(shí)現(xiàn)屬性列表功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解下

使用C#開(kāi)發(fā)過(guò)Windows Forms的都知道,在Windows Forms程序中,有一個(gè)PropertyGrid控件,可以用于顯示對(duì)象的屬性,在WPF中并沒(méi)有默認(rèn)提供此功能的控件,今天以一個(gè)簡(jiǎn)單的小例子,簡(jiǎn)述在WPF中借助WinForm的PropertyGrid實(shí)現(xiàn)屬性列表功能,僅供學(xué)習(xí)分享使用,如有不足之處,還請(qǐng)指正。

涉及知識(shí)點(diǎn)

  • PropertyGrid 是.NET中屬性瀏覽器的核心,PropertyGrid控件顯示任何對(duì)象或類(lèi)型的屬性,并檢索項(xiàng)的屬性。PropertyGrid一般用在Windows Forms程序中,在WPF程序中,可以通過(guò)自定義控件實(shí)現(xiàn),也可以借助WindowsFormsHost控件,將Windows Forms中的控件,宿主到WPF程序中。
  • WindowsFormsHost,一個(gè)WPF控件,允許允許在 WPF 程序上托管 Windows Forms控件。反過(guò)來(lái),若要在 Windows 窗體控件或窗體中承載 WPF 元素,請(qǐng)使用 控件 ElementHost 。

PropertyGrid簡(jiǎn)介

PropertyGrid最常用屬性,如下所示:

  • SelectedObject,設(shè)置PropertyGrid控件選擇的對(duì)象,賦值后,控件將顯示對(duì)象所有public修飾的屬性。
  • SelectedObjects,設(shè)置PropertyGrid控件顯示的對(duì)象列表,為數(shù)組類(lèi)型。賦值后,將顯示所有對(duì)象公共的public修飾的屬性。

除了上述兩個(gè)最常用屬性,PropertyGrid還有其他屬性,如下所示:

  • BackColor 更改其背景色。
  • HelpBackColor 更改助窗口背景色。
  • HelpForeColor 更改助窗口字體顏色。
  • HelpVisible 顯示隱藏幫助窗口。
  • ToolbarVisible 顯示隱藏工具欄。
  • LargeButtons 顯示大型工具欄按鈕。
  • PropertySort 按字母順序?qū)傩赃M(jìn)行排序。
  • BackColor 更改拆分器顏色。
  • LineColor 更改網(wǎng)格線(xiàn)和邊框。

PropertyGrid支持的對(duì)象屬性注解,如下所示:

  • DescriptionAttribute - 設(shè)置屬性在屬性下方的說(shuō)明幫助窗格中顯示的屬性的文本。 這是為具有焦點(diǎn)的活動(dòng)屬性提供幫助文本的有用方法。 將此屬性應(yīng)用于 MaxRepeatRate 該屬性。
  • CategoryAttribute 設(shè)置屬性在網(wǎng)格中所屬的類(lèi)別。 當(dāng)需要按類(lèi)別名稱(chēng)分組的屬性時(shí),這非常有用。 如果屬性未指定類(lèi)別,則會(huì)將其分配給 Misc 類(lèi)別。 將此屬性應(yīng)用于所有屬性。
  • BrowsableAttribute – 指示屬性是否顯示在網(wǎng)格中。 如果要從網(wǎng)格中隱藏屬性,這非常有用。 默認(rèn)情況下,公共屬性始終顯示在網(wǎng)格中。 將此屬性應(yīng)用于 SettingsChanged 該屬性。
  • ReadOnlyAttribute – 指示屬性是否為只讀。 如果要使屬性在網(wǎng)格中不可編輯,這非常有用。 默認(rèn)情況下,具有 get 和 set 訪(fǎng)問(wèn)器函數(shù)的公共屬性在網(wǎng)格中可編輯。 將此屬性應(yīng)用于 AppVersion 該屬性。
  • DefaultValueAttribute – 標(biāo)識(shí)屬性的默認(rèn)值。 如果想要為屬性提供默認(rèn)值,然后確定該屬性的值是否不同于默認(rèn)值,則這非常有用。 將此屬性應(yīng)用于所有屬性。
  • DefaultPropertyAttribute – 標(biāo)識(shí)類(lèi)的默認(rèn)屬性。 類(lèi)的默認(rèn)屬性在網(wǎng)格中選擇類(lèi)時(shí)首先獲取焦點(diǎn)。 將此屬性應(yīng)用于 AppSettings 類(lèi)。
  • DisplayNameAttribute - 實(shí)際顯示的名稱(chēng)

通過(guò)上述注解,可以顯示屬性在PropertyGrid中的說(shuō)明或者其他內(nèi)容。

PropertyGrid控件目前支持.NET Framework和Windows Desktop版本,如下所示:

開(kāi)發(fā)步驟

1. 檢查類(lèi)庫(kù)

首先檢查項(xiàng)目中是否引用【Microsoft.WindowsDesktop.App】框架,在此框架中,會(huì)包含【System.Windows.Forms】,若沒(méi)有,需要手動(dòng)添加,如下圖所示:

2. 引用命名空間

在項(xiàng)目中需要添加PropertyGrid的頁(yè)面,添加System.Windows.Forms命名空間,如下所示:

<Window x:Class="HelloWorld.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:HelloWorld"
        xmlns:winfm="clr-namespace:System.Windows.Forms;assembly=System.Windows.Forms"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800">
</Window>

3. 添加PropertyGrid控件

由于PropertyGrid是Winodws Forms中的控件,并不能在WPF中直接使用,需要托管到WindowsFormsHost中才能正確顯示,如下所示:

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition></ColumnDefinition>
        <ColumnDefinition></ColumnDefinition>
    </Grid.ColumnDefinitions>
    <Button x:Name="btnHelloWorld" Content="Click Say Hello World"
            Width="150" Height="30" Click="btnHelloWorld_Click"></Button>
    <WindowsFormsHost Grid.Column="1" Margin="18,12,0,0" Name="windowsFormsHost1" VerticalAlignment="Top">
        <winfm:PropertyGrid x:Name="propertyGrid"></winfm:PropertyGrid>
    </WindowsFormsHost>
</Grid>

4. 設(shè)置對(duì)象

通過(guò)SelectedObject屬性為PropertyGrid賦值,由于PropertyGrid屬性并不是WPF中的依賴(lài)對(duì)象,所以不能進(jìn)行綁定,但可以通過(guò)后臺(tái)C#代碼進(jìn)行賦值。如下所示:

定義測(cè)試類(lèi)Person

public class Person
{
    [Category("Person")]
    [DisplayName("標(biāo)識(shí)")]
    [Description("唯一標(biāo)識(shí)")]
    public int Id { get; set; }
 
    [Category("Person")]
    [DisplayName("名稱(chēng)")]
    [Description("名稱(chēng)")]
    public string Name { get; set; }
 
    [Category("Person")]
    public string Title { get; set; }
 
    [Category("Person")]
    public string Description { get; set; }
 
    [Category("Person")]
    public int Age { get; set; }
}

 聲明Person對(duì)象并賦值給PropertyGrid,如下所示:

public MainWindow()
{
    InitializeComponent();
    var p = new Person
    {
        Id = 1,
        Name = "老碼識(shí)途",
        Age = 20,
        Description = "這是一個(gè)人",
        Title = "老碼識(shí)途作者"
        };
    this.propertyGrid.SelectedObject = p;
}

實(shí)例演示

通過(guò)上述步驟,就可以實(shí)現(xiàn)PropertyGrid屬性框的功能,本例將Person的作為要顯示屬性的對(duì)象賦值給PropertyGrid,如下所示:

 

 注意,如果沒(méi)有為屬性設(shè)置Category,則默認(rèn)為Misc。

到此這篇關(guān)于WPF實(shí)現(xiàn)PropertyGrid功能的文章就介紹到這了,更多相關(guān)WPF實(shí)現(xiàn)PropertyGrid內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C#中的char與string詳解

    C#中的char與string詳解

    本文詳細(xì)講解了C#中的char與string,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-01-01
  • C#實(shí)現(xiàn)IP代理池調(diào)度的示例代碼

    C#實(shí)現(xiàn)IP代理池調(diào)度的示例代碼

    這篇文章主要為大家介紹了C#實(shí)現(xiàn)IP代理池調(diào)度的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),具有一定的參考與學(xué)習(xí)價(jià)值,感興趣的小伙伴可以了解一下
    2023-07-07
  • C#使用WebClient登錄網(wǎng)站并抓取登錄后的網(wǎng)頁(yè)信息實(shí)現(xiàn)方法

    C#使用WebClient登錄網(wǎng)站并抓取登錄后的網(wǎng)頁(yè)信息實(shí)現(xiàn)方法

    這篇文章主要介紹了C#使用WebClient登錄網(wǎng)站并抓取登錄后的網(wǎng)頁(yè)信息實(shí)現(xiàn)方法,涉及C#基于會(huì)話(huà)操作登陸網(wǎng)頁(yè)及頁(yè)面讀取相關(guān)操作技巧,需要的朋友可以參考下
    2017-05-05
  • C#中系統(tǒng)時(shí)間和UNIX時(shí)間戳互相轉(zhuǎn)換

    C#中系統(tǒng)時(shí)間和UNIX時(shí)間戳互相轉(zhuǎn)換

    本文主要介紹C#中系統(tǒng)時(shí)間和UNIX時(shí)間戳相互轉(zhuǎn)換的方法,大家可以直接拿去用,希望有用。
    2016-05-05
  • C#?form-data上傳圖片流到遠(yuǎn)程服務(wù)器的詳細(xì)代碼

    C#?form-data上傳圖片流到遠(yuǎn)程服務(wù)器的詳細(xì)代碼

    這篇文章主要介紹了C#?form-data上傳圖片流到遠(yuǎn)程服務(wù)器的詳細(xì)代碼,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-08-08
  • C#實(shí)現(xiàn)向數(shù)組指定索引位置插入新的元素值

    C#實(shí)現(xiàn)向數(shù)組指定索引位置插入新的元素值

    這篇文章給大家介紹了利用C#實(shí)現(xiàn)向數(shù)組指定索引位置插入新的元素值,首先需要定義一個(gè)一維數(shù)組,然后修改數(shù)組的長(zhǎng)度,從而在其中增加一個(gè)元素,需要的朋友可以參考下
    2024-02-02
  • 簡(jiǎn)述C#枚舉高級(jí)戰(zhàn)術(shù)

    簡(jiǎn)述C#枚舉高級(jí)戰(zhàn)術(shù)

    這篇文章主要介紹了簡(jiǎn)述C#枚舉高級(jí)戰(zhàn)術(shù),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • C#程序優(yōu)化-有效減少CPU占用率

    C#程序優(yōu)化-有效減少CPU占用率

    本文給大家介紹的是C#程序優(yōu)化的小技巧,通過(guò)此方法可以有效的降低CPU的占用率,十分的簡(jiǎn)單實(shí)用,有需要的小伙伴可以參考下。
    2015-06-06
  • 一文詳解C#中重寫(xiě)(override)及覆蓋(new)的區(qū)別

    一文詳解C#中重寫(xiě)(override)及覆蓋(new)的區(qū)別

    這篇文章主要為大家詳細(xì)介紹了C#中重寫(xiě)(override)及覆蓋(new)這兩個(gè)關(guān)鍵詞的區(qū)別,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2023-03-03
  • C#異步編程庫(kù)AsyncEx的實(shí)現(xiàn)

    C#異步編程庫(kù)AsyncEx的實(shí)現(xiàn)

    本文主要介紹了C#異步編程庫(kù)AsyncEx的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2025-05-05

最新評(píng)論

雅江县| 西峡县| 澎湖县| 太康县| 漳州市| 格尔木市| 梁平县| 桐庐县| 龙陵县| 潼关县| 怀宁县| 安陆市| 仁怀市| 宽城| 搜索| 阜城县| 永丰县| 株洲县| 子洲县| 泽库县| 通州区| 安岳县| 罗江县| 大竹县| 盐源县| 双鸭山市| 屏南县| 京山县| 通化县| 长岭县| 云浮市| 株洲县| 平遥县| 黄大仙区| 瑞金市| 木里| 吉木萨尔县| 南昌市| 灵寿县| 普兰县| 周口市|