WPF學習筆記(12)下拉框控件ComboBox與數據模板

下拉框控件ComboBox與數據模板

  • 一、ComboBox
    • 1. ComboBox概述
    • 2. ItemsControl類
    • 3. Selector類
    • 4. ComboBox類
  • 二、ComboBox數據模板
  • 總結


一、ComboBox

1. ComboBox概述

ComboBox類代表一個有下拉列表的選擇控件,供用戶選擇。
官方文檔:https://learn.microsoft.com/zh-cn/dotnet/api/system.windows.controls.combobox?view=netframework-4.8
在這里插入圖片描述

2. ItemsControl類

ItemsControl類是列表、下拉框、菜單、表格等一系列選項的基類,部分屬性如下:

屬性說 明
ltemsSource獲取或設置用于生成 ltemsControl 的內容的集合。設置
ltemsSource屬性后,集合ltems是只讀且固定大小的,因此不可修改。
ltems獲取用于生成 ltemsControl 的內容的集合,
DisplayMemberPath獲取或設置源對象上的值的路徑,以用作對象的可視表示形式,不能同時設置 DisplayMemberPath 和ltemTemplate.
ItemTemplate獲取或設置用來顯示每個項的數據模板DataTemplate。
ltemContainerStyle獲取或設置應用于為每個項生成的容器元素的 Style。

3. Selector類

Selector類允許用戶從其元素中選擇項的控件。部分屬性和事件如下:

屬性說 明
SelectedIndex獲取或設置當前選擇中第一項的索引,如果選擇為空返回-1。
Selectedltem獲取或設置當前選擇中的第一項,如果選擇為空返回 null。
SelectedValue獲取或設置當前選擇中的第一項的某個成員值。
SelectedValuePath通常與 SelectedValue 屬性一起使用,用于指定控件中選定項目的屬性。
事件說 明
Selected當選擇項時發生。
SelectionChanged當選擇更改時發生。
UnSelected當取消選擇項時發生。

4. ComboBox類

ComboBox類的部分屬性與事件如下:

屬性說 明
SelecedtIndex獲取默認顯示項,索引從0起始
IsEditable獲取或設置一個值,該值指示啟用或禁用 ComboBox 的文本框中的文本編輯。
IsReadOnly獲取或設置啟用僅限選擇模式的值,在此模式中,可選擇但不可編輯組合框中的內容。
IsDropDownOpen獲取或設置一個值,該值指示組合框的下拉部分當前是否打開。
MaxDropDownHeight獲取或設置組合框下拉部分的最大高度。
Text獲取或設置當前選定項的文本。
事件說 明
DropDownOpened當關閉組合框的下拉列表時發生
DropDownClosed當打開組合框的下拉列表時發生

MainWindow.xaml界面的屬性面板部分屬性設置如圖:
在這里插入圖片描述
ComboBox控件內填寫下拉框內容有三種實現方式,第一種通過ComboBox.ItemsSource,第二種通過ComboBoxItem,第三種通過MainWindow.xaml.cs界面的C#代碼,第三種方式與第一種設置效果等同。
在這里插入圖片描述

    <Grid><!--ComboBox.ItemsSource實現--><ComboBox x:Name="comboBox1"  HorizontalAlignment="Left" Margin="285,89,0,0" VerticalAlignment="Top" Width="216" Height="27" FontSize="20"><ComboBox.ItemsSource><Collections:ArrayList><system:String>高等數學</system:String><system:String>線性代數</system:String><system:String>數率統計</system:String><Rectangle Fill="red" Width="30" Height="20"/></Collections:ArrayList></ComboBox.ItemsSource></ComboBox><!--ComboBoxItem實現--><ComboBox x:Name="comboBox2"  HorizontalAlignment="Left" Margin="285,160,0,0" VerticalAlignment="Top" Width="216" Height="27" FontSize="20"><ComboBoxItem>美術</ComboBoxItem><ComboBoxItem>音樂</ComboBoxItem><ComboBoxItem>體育</ComboBoxItem></ComboBox><!--C#代碼實現--><ComboBox x:Name="comboBox3"  HorizontalAlignment="Left" Margin="285,229,0,0" VerticalAlignment="Top" Width="216" Height="27" FontSize="20"/></Grid>
public partial class MainWindow : Window
{public MainWindow(){InitializeComponent();List<string> list = new List<string>();list.Add("C++");list.Add("Java");list.Add("Python");//數據源賦值comboBox3.ItemsSource = list;}
}

ComboBox控件最常用事件為SelectionChanged
在這里插入圖片描述

//創建學生類,包含ID, Name, Score三個屬性
public class Stu
{public int Id { get; set; }public string Name { get; set; }public int Score { get; set; }public Stu(int id, string name, int score){Id = id;Name = name;Score = score;}
}
public partial class MainWindow : Window
{public MainWindow(){InitializeComponent();comboBox3.SelectionChanged += comboBox3_SelectionChanged;List<Stu> list = new List<Stu>{new Stu(1, "張三", 100),new Stu(2, "李四", 80),new Stu(3, "王五", 75)};comboBox3.ItemsSource = list;// 顯示的字段,下拉框界面上顯示的是姓名comboBox3.DisplayMemberPath = "Name";//選擇的值的字段,SelectedValue獲取的值是分數comboBox3.SelectedValuePath = "Score";}private void comboBox3_SelectionChanged(object sender, SelectionChangedEventArgs e){// 不設置 SelectedValuePath屬性的時候,Selectedltem與 SelectedValue 一樣//設置了 SelectedValuePath屬性,那么 SelectedValue 就會按Path指定的屬性顯示Console.WriteLine(comboBox3.SelectedItem + "->" + comboBox3.SelectedValue);}
}

二、ComboBox數據模板

通過在MainWindow.xaml界面的window.resources 定義數據模板,然后使用ComboBox類繼承的ItemTemplate屬性引用,示例代碼如下:

public class Stu
{public int Id { get; set; }public string Name { get; set; }public int Score { get; set; }public Stu(int id, string name, int score){Id = id;Name = name;Score = score;}
}
public partial class MainWindow : Window
{public MainWindow(){InitializeComponent();List<Stu> list = new List<Stu>{new Stu(1, "張三", 100),new Stu(2, "李四", 80),new Stu(3, "王五", 75)};comboBox.ItemsSource = list;comboBox.SelectionChanged += comboBox_SelectionChanged;}private void comboBox_SelectionChanged(object sender, SelectionChangedEventArgs e){Console.WriteLine(comboBox.SelectedItem + "->" + comboBox.SelectedValue);}
}
    <Window.Resources><DataTemplate x:Key="myDT"><StackPanel><TextBlock Text="{Binding Path=Id}" Foreground="Red" /><TextBlock Text="{Binding Path=Name}" Foreground="Green" /><TextBlock Text="{Binding Path=Score}" Foreground="Blue" /></StackPanel></DataTemplate></Window.Resources><Grid><ComboBox x:Name="comboBox" ItemTemplate="{StaticResource myDT}"HorizontalAlignment="Center" Height="55"Margin="0,120,0,0"VerticalAlignment="Top"Width="260"/></Grid>

在這里插入圖片描述

總結

  • ComboBox控件內容的三種實現方式
  • 數據模板定義方法

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/87499.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/87499.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/87499.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Docker for Windows 設置國內鏡像源教程

在使用 Docker 時&#xff0c;由于默認的 Docker Hub 鏡像源位于國外&#xff0c;國內用戶在拉取鏡像時可能會遇到速度慢或連接不穩定的問題。為了加速鏡像拉取&#xff0c;可以將 Docker 配置為使用國內鏡像源。以下是適用于 Windows 系統的詳細配置方法&#xff1a; 方法一&…

一鍵部署AI工具!用AIStarter快速安裝ComfyUI與Stable Diffusion

AIStarter部署AI工具&#xff0c;讓AI開發更簡單&#xff01;無需研究復雜環境配置&#xff0c;AIStarter平臺提供一鍵安裝ComfyUI和Stable Diffusion&#xff0c;支持多版本選擇&#xff0c;快速上手。以下是詳細步驟&#xff1a; 一、訪問AIStarter市場 下載AIStarter&#x…

Python基礎(吃洋蔥小游戲)

下面我將為你設計一個"吃洋蔥小游戲"的Python實現方案&#xff0c;使用Pygame庫開發。這個游戲模擬吃洋蔥的過程&#xff0c;玩家需要收集不同種類的洋蔥以獲得高分&#xff0c;同時避免吃到辣椒。 &#x1f9c5; 吃洋蔥小游戲 - Python實現方案 &#x1f3ae; 1. …

Objective-C 路由表原理詳解

在 Objective-C 中實現路由表是組件化架構的核心&#xff0c;它通過 URL 映射機制實現模塊間解耦通信。以下是完整實現原理&#xff1a; 一、核心架構設計 #mermaid-svg-5jMinPiZe8mivAbi {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fil…

通過交互式網頁探索傳輸現象-AI云計算數值分析和代碼驗證

傳輸過程涉及質量、動量和能量等物理量在各種系統中的基本運動和轉移&#xff0c;主要分為動量傳輸、熱量傳輸和質量傳輸&#xff0c;在工程、環境科學、生物學和物流等領域至關重要。 傳輸過程是指物理量&#xff08;如質量、動量和能量&#xff09;在物理、化學、生物或工程系…

使用Rust原生實現小波卡爾曼濾波算法

一、算法原理概述小波變換&#xff08;Wavelet Transform&#xff09;通過多尺度分解將信號分為高頻&#xff08;細節&#xff09;和低頻&#xff08;近似&#xff09;部分&#xff0c;高頻通常包含噪聲&#xff0c;低頻保留主體信息。使用Haar小波&#xff08;計算高效&#x…

leetcode 3304. 找出第 K 個字符 I 簡單

Alice 和 Bob 正在玩一個游戲。最初&#xff0c;Alice 有一個字符串 word "a"。 給定一個正整數 k。 現在 Bob 會要求 Alice 執行以下操作 無限次 : 將 word 中的每個字符 更改 為英文字母表中的 下一個 字符來生成一個新字符串&#xff0c;并將其 追加 到原始的…

數字人分身+矩陣系統聚合+碰一碰發視頻: 源碼搭建-支持OEM

以下是關于數字人分身、矩陣系統聚合及碰一碰發視頻功能的源碼搭建與OEM支持的方案整理&#xff1a;核心技術模塊數字人分身技術 使用深度學習框架&#xff08;如PyTorch或TensorFlow&#xff09;訓練生成對抗網絡&#xff08;GAN&#xff09;或變分自編碼器&#xff08;VAE&am…

【LeetCode 熱題 100】189. 輪轉數組——(解法一)額外數組

Problem: 189. 輪轉數組 題目&#xff1a;給定一個整數數組 nums&#xff0c;將數組中的元素向右輪轉 k 個位置&#xff0c;其中 k 是非負數。 文章目錄 整體思路完整代碼時空復雜度時間復雜度&#xff1a;O(N)空間復雜度&#xff1a;O(N) 整體思路 這段代碼旨在解決一個經典的…

【PyCharm 2025.1.2配置debug】

大家先看下我的配置 1.調試配置 選擇 FastAPI 框架名稱-》 自定義應用程序文件&#xff1a;必須選擇當前項目的main.pyUvicorn 選項&#xff1a;這是啟動命令&#xff0c;有第三步的選擇 main.py 所以只需要–reload即可&#xff0c;如果想自定義啟動端口補充–port xxxxPytho…

Python數據庫軟件:查詢與預測功能集成系統

Python數據庫軟件:查詢與預測功能集成系統 概述 本文將詳細介紹一個具備查詢和模型預測功能的Python數據庫軟件的設計與實現。該系統基于Python開發,使用Excel作為數據存儲格式,包含約15個功能頁面,支持數據管理、查詢分析、模型預測等核心功能。 系統架構 技術棧 核心…

什么是持續集成/持續交付(CI/CD)?

基本概念 CI/CD旨在通過自動化流程提高代碼質量、加快發布速度 CI &#xff08;Continuous Integration&#xff0c;持續集成&#xff09;CD&#xff08;Continuous Delivery/Deployment&#xff0c;持續交付/持續部署&#xff09; CI 持續集成 目標 頻繁加粗樣式將代碼合…

核彈級漏洞

CVE-2025-6018 漏洞介紹&#xff1a; 該漏洞是Linux PAM&#xff08;可插拔認證模塊&#xff09;中的一個本地權限提升漏洞&#xff0c;主要存在于openSUSE Leap 15和SUSE Linux Enterprise 15的PAM配置中。由于PAM規則錯誤地將檢查條件設置為用戶存在SSH或TTY會話&#xff0c…

LabVIEW自動扶梯振動監測

利用LabVIEW開發平臺構建自動扶梯機械振動數據采集系統&#xff0c;實現驅動主機、減速器、梯級等關鍵部位的振動信號實時采集、頻譜分析、數據存儲及故障特征提取。系統通過加速度傳感器與高速數據采集卡的協同工作&#xff0c;結合 LabVIEW 圖形化編程的高效數據處理能力&…

PTA最少交換次數

最少交換次數 分數 15 作者 計科G隊長 單位 重慶大學 長度為N的數組中只有1&#xff0c;2&#xff0c;3三種值&#xff0c;要按升序排序&#xff0c;并且只能通過數值間的兩兩交換實現不能移位。比如某項競賽的優勝者按金銀銅牌排序&#xff0c;或者荷蘭國旗問題都是該問題…

LiteHub中間件之跨域訪問CORS

跨域訪問CORS 原理基本概念簡單請求非簡單請求&#xff08;預檢請求&#xff09; 代碼實現服務器端Cors的關鍵配置服務端解析預檢請求服務端填充響應 抓包分析 原理 基本概念 在瀏覽器安全模型中&#xff0c;同源策略是最重要的安全基石。 一個“域”是由3個要素組成的&#…

FastAPI開發教程

FastAPI 是一個現代、高性能的 Python Web 框架&#xff0c;專為構建 APIs 設計。它基于 Python 類型提示&#xff0c;支持異步編程&#xff0c;并提供自動生成的交互式文檔&#xff08;Swagger UI 和 ReDoc&#xff09;。以下是 FastAPI 開發的核心指南&#xff1a; 1. 安裝 …

基于Spring Boot + MyBatis-Plus + Thymeleaf的評論管理系統深度解析

你好呀&#xff0c;我是小鄒。 個人博客系統日漸完善&#xff0c;現在的文章評論以及留言數量逐漸增多&#xff0c;所以今天重構了管理后臺的評論列表&#xff08;全量查詢 -> 分頁條件搜索&#xff09;。 示例圖 網頁端手機端一、系統架構設計與技術選型 系統采用前后端分離…

sqlmap學習筆記ing(1.Easy_SQLi(時間,表單注入))

題解 根據題目提示&#xff0c;應為SQL注入&#xff0c;題目頁面只有一個表單&#xff0c;用sqlmap進行表單注入。 使用--forms參數進行自動化表單注入&#xff0c;逐步得到flag。 ### 總結參數作用&#xff1a; -u 指定目標URL。 -C 指定列名&#xff08;多個…

SciPy 安裝使用教程

一、SciPy 簡介 SciPy&#xff08;Scientific Python&#xff09;是基于 NumPy 的開源科學計算庫&#xff0c;提供了數值積分、優化、信號處理、線性代數、統計分析等高級科學計算功能。它是構建 Python 科學計算生態系統的核心組件之一&#xff0c;常用于科研、工程、數據分析…