亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

WPF實現(xiàn)PropertyGrid功能

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

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

涉及知識點

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

PropertyGrid簡介

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

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

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

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

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

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

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

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

開發(fā)步驟

1. 檢查類庫

首先檢查項目中是否引用【Microsoft.WindowsDesktop.App】框架,在此框架中,會包含【System.Windows.Forms】,若沒有,需要手動添加,如下圖所示:

2. 引用命名空間

在項目中需要添加PropertyGrid的頁面,添加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è)置對象

通過SelectedObject屬性為PropertyGrid賦值,由于PropertyGrid屬性并不是WPF中的依賴對象,所以不能進行綁定,但可以通過后臺C#代碼進行賦值。如下所示:

定義測試類Person

public class Person
{
    [Category("Person")]
    [DisplayName("標識")]
    [Description("唯一標識")]
    public int Id { get; set; }
 
    [Category("Person")]
    [DisplayName("名稱")]
    [Description("名稱")]
    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對象并賦值給PropertyGrid,如下所示:

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

實例演示

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

 

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

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

相關(guān)文章

  • C#獲取指定目錄下指定文件的方法

    C#獲取指定目錄下指定文件的方法

    這篇文章介紹了C#獲取指定目錄下指定文件的方法,文中通過示例代碼介紹的非常詳細。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-04-04
  • C# AutoResetEvent的具體使用方法

    C# AutoResetEvent的具體使用方法

    AutoResetEvent是C#中的一個同步原語,用于在線程之間傳遞信號,本文主要介紹了C# AutoResetEvent的具體使用方法,具有一定的參考價值,感興趣的可以了解一下
    2025-01-01
  • C#如何將DataTable導(dǎo)出到Excel解決方案

    C#如何將DataTable導(dǎo)出到Excel解決方案

    由于公司項目中需要將系統(tǒng)內(nèi)用戶操作的所有日志進行轉(zhuǎn)存?zhèn)浞荩紤]到以后可能還需要還原,所以最后決定將日志數(shù)據(jù)備份到Excel中
    2012-11-11
  • C#鉤子Hook監(jiān)聽鍵盤鼠標事件實現(xiàn)窗體自動關(guān)閉

    C#鉤子Hook監(jiān)聽鍵盤鼠標事件實現(xiàn)窗體自動關(guān)閉

    鉤子(Hook)的作用主要體現(xiàn)在監(jiān)視和攔截系統(tǒng)或進程中的各種事件消息,并進行自定義處理,本文主要介紹了C#如何利用鉤子Hook監(jiān)聽鍵盤鼠標事件實現(xiàn)窗體自動關(guān)閉功能,感興趣的可以了解下
    2025-01-01
  • 使用C# CefSharp Python采集某網(wǎng)站簡歷并且自動發(fā)送邀請短信的方法

    使用C# CefSharp Python采集某網(wǎng)站簡歷并且自動發(fā)送邀請短信的方法

    這篇文章主要給大家介紹了關(guān)于如何使用C# CefSharp Python采集某網(wǎng)站簡歷并且自動發(fā)送邀請短信的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起看看吧
    2019-03-03
  • C#信號量用法簡單示例

    C#信號量用法簡單示例

    這篇文章主要介紹了C#信號量用法,結(jié)合簡單C#控制臺應(yīng)用程序形式分析了信號量的功能、定義、調(diào)用、釋放等操作技巧,需要的朋友可以參考下
    2016-07-07
  • C#如何利用反射將枚舉綁定到下拉框詳解

    C#如何利用反射將枚舉綁定到下拉框詳解

    這篇文章主要給大家介紹了關(guān)于C#如何利用反射將枚舉綁定到下拉框的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起看看吧
    2018-07-07
  • C#?如何使用批處理啟動Windows服務(wù)

    C#?如何使用批處理啟動Windows服務(wù)

    這篇文章主要介紹了C#使用批處理啟動Windows服務(wù),本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-06-06
  • C#中構(gòu)造函數(shù)和析構(gòu)函數(shù)用法實例詳解

    C#中構(gòu)造函數(shù)和析構(gòu)函數(shù)用法實例詳解

    這篇文章主要介紹了C#中構(gòu)造函數(shù)和析構(gòu)函數(shù)用法,結(jié)合實例形式詳細分析了C#中構(gòu)造函數(shù)與析構(gòu)函數(shù)的原理、定義、使用方法與相關(guān)注意事項,需要的朋友可以參考下
    2016-06-06
  • C#解析char型指針所指向的內(nèi)容(實例解析)

    C#解析char型指針所指向的內(nèi)容(實例解析)

    在c++代碼中定義了一個功能函數(shù),這個功能函數(shù)會將計算的結(jié)果寫入一個字符串型的數(shù)組中output,然后c#會調(diào)用c++導(dǎo)出的dll中的接口函數(shù),然后獲取這個output并解析成string類型,本文通過實例解析C#?char型指針所指向的內(nèi)容,感興趣的朋友一起看看吧
    2024-03-03

最新評論