5.0 WPF的基礎介紹1-Grid,Stack,button

? ? ? ? WPF:? Window Presentation Foundation. WPF與WinForms的對比如下:

特性WinFormsWPF
技術基礎基于傳統的GDI+(圖形設備接口)基于DirectX,支持硬件加速的矢量渲染
UI設計方式拖拽控件+事件驅動代碼(簡單但局限)XAML(聲明式UI)+ MVVM模式(解耦邏輯與UI)
布局系統固定像素布局(缺乏靈活性)強大的布局系統(自適應、流式布局)
數據綁定簡單數據綁定(功能有限)強大的雙向綁定、數據模板、依賴屬性
圖形能力基礎2D圖形(適合簡單界面)支持2D/3D、動畫、矢量圖形、復雜視覺效果
學習曲線入門簡單(適合快速開發)學習成本較高(需掌握XAML、MVVM等)
跨平臺兼容性僅限Windows僅限Windows(但可通過Avalonia等框架擴展)

WPF適合

  • 開發現代化、高交互性桌面應用(如數據可視化、工業控制界面)。

  • 需要復雜UI動畫、主題定制或響應式布局的項目。

  • 長期維護的項目(MVVM模式更易解耦和擴展)

  • 除非有明確的WinForms維護需求,否則WPF更符合技術趨勢,且其設計理念對后續技術遷移(如前端框架)有啟發。

一、布局介紹

布局面板說明
Canvas? ? ? ?允許以任何方式放置子控件。不會對子控件位置施加任何控制
DockPanel? ? ? ?子控件緊貼四條邊中的任意一邊。最后一個控件則充滿剩余區域
Grid????????????????可分為若干行與若干列
StackPanel????????

沿水平方向或者垂直方向進行排列

WrapPanel????????

也是沿著水平或者豎直排列,但是以多行多列方式排行。

1.Grid可以分成幾行幾列(行列的高度或寬度可以指定具體尺寸,也可以使用比例(1*,2*,下邊表示第3行比第4行高一倍)

? ? Grid可以嵌套Grid,或者其他控件比如stackpanel

? ???<Grid.RowDefinitions>
? ? ?<RowDefinition Height="20"/>
? ? ?<RowDefinition Height="100"/>
? ? ?<RowDefinition Height="2*"/>
? ? ?<RowDefinition Height="1*"/>
?</Grid.RowDefinitions>

2. stackpanel

????????可以橫向(Orientation="Horizontal")或者縱向(Orientation="Vertical")排列其中的控件。????????

3. button, 文本內容是Content(與winform不同)

二、實際例子如下:

  <Grid ShowGridLines="true"><Grid.RowDefinitions><RowDefinition Height="20"/><RowDefinition Height="100"/><RowDefinition Height="2*"/><RowDefinition Height="1*"/></Grid.RowDefinitions><Button x:Name="btnFile" Content="文件" Height="20" Width="50" HorizontalAlignment="Left"  Grid.Column="0" Grid.Row="0" Margin="0,0,0,0  " Click="btnFile_Click"/><Button Content="編輯" Height="20" Width="50" HorizontalAlignment="Left"  Grid.Column="0" Grid.Row="0" Margin="50,0,0,0  "/><Button Content="視圖" Height="20" Width="50" HorizontalAlignment="Left"  Grid.Column="0" Grid.Row="0" Margin="100,0,0,0  "/><Button Content="項目" Height="20" Width="50" HorizontalAlignment="Left"  Grid.Column="0" Grid.Row="0" Margin="150,0,0,0  "/><StackPanel Grid.Row="1" Grid.Column="0"><Button Content="按鈕3" Height="50" Width="50" HorizontalAlignment="Left"/><Button Content="按鈕4" Height="50" Width="50" HorizontalAlignment="Left"/></StackPanel><StackPanel Grid.Row="2" Grid.Column="0" Orientation="Horizontal"><Button Content="按鈕5" VerticalAlignment="Top" Height="30" Width="50" HorizontalAlignment="Left"/><Button Content="按鈕6" VerticalAlignment="Center" Height="30" Width="50" HorizontalAlignment="Left"/><Button Content="按鈕7" VerticalAlignment="Bottom" Height="30" Width="50" HorizontalAlignment="Left"/></StackPanel><Grid  Grid.Row="3" Grid.Column="0"><Grid.ColumnDefinitions><ColumnDefinition Width="70"/><ColumnDefinition /></Grid.ColumnDefinitions><StackPanel Grid.Column="0"><Button Content="按鈕8" Height="20"/><Button Content="按鈕9" Height="20"/></StackPanel><StackPanel Grid.Column="1"><Button Content="按鈕10" Height="20" Width="70"/><Button Content="按鈕11" Height="20" Width="70"/></StackPanel></Grid>              </Grid>

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

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

相關文章

QT軟件設計可考慮回答

在Qt應用中是否引入抽象類需要根據具體場景權衡&#xff0c;以下是分層建議&#xff1a; 建議采用抽象類的3個典型場景&#xff1a; 傳感器系統抽象&#xff08;強推薦&#xff09; class AbstractSensor { public:virtual ~AbstractSensor() default;virtual QVector<L…

pytorch學習(b站小土堆學習)

1 環境配置 參考鏈接 2. dir 和 help函數 dir()&#xff1a;用于查看某一模塊函數的方法 help()&#xff1a; 用于查看某方法的使用方法 3. dataset類實戰 利用Image對象打開圖片&#xff0c;利用os模塊的地址拼接組成圖片路徑 當我們用方括號訪問元素對象時&#xff0c;…

Unity TextMeshPro 實現文本逐字淡出效果

Unity TextMeshPro 實現文本逐字淡出效果 前言項目思路場景布置代碼編寫 前言 在處理角色對話時經常會用到一些文本動畫&#xff0c;正好記錄一下。使用 TextMeshPro&#xff0c;我們可以直接操作文本的頂點數據&#xff0c;實現諸如漸變、動畫等效果&#xff0c;為游戲界面和…

Mathtype無法插入到Word中

在word工具欄上有沒有出現Mtahtype&#xff0c;會出現以下兩種情況&#xff1a; 1. 沒有出現Mtahtype 2. 出現Mtahtype&#xff0c;但是點擊會出現彈窗 “ Couldnt find the MathPage.wll ” 解決方案 首先查看word版本是32位還是64位&#xff0c;這個位數是office安裝位數…

責任鏈模式_行為型_GOF23

責任鏈模式 責任鏈模式&#xff08;Chain of Responsibility Pattern&#xff09;是一種行為型設計模式&#xff0c;核心思想是將多個處理請求的對象連成一條鏈&#xff0c;請求沿鏈傳遞直到被處理。它像現實中的“多級審批流程”——請假或報銷時&#xff0c;申請會逐級提交給…

Qt圖形化界面為何總被“冷落“?

在Qt開發者的IDE中&#xff0c;Qt Designer總像一個被遺忘的角落——即便它有著直觀的拖拽式界面設計功能。通過分析GitHub上超過5000個Qt項目發現&#xff0c;僅有17%的項目使用.ui文件構建界面。這個數據背后&#xff0c;隱藏著開發者群體對GUI構建方式的集體選擇。我們不禁要…

SQL Server從安裝到入門一文掌握應用能力。

本篇文章主要講解,SQL Server的安裝教程及入門使用的基礎知識,通過本篇文章你可以快速掌握SQL Server的建庫、建表、增加、查詢、刪除、修改等基本數據庫操作能力。 作者:任聰聰 日期:2025年3月31日 一、SQL Server 介紹: SQL Server 是微軟旗下的一款主流且優質的數據庫…

簡單視圖函數

視圖函數 文章目錄 視圖函數[toc]一、什么是視圖函數二、簡單視圖函數三、返回錯誤視圖 一、什么是視圖函數 所謂視圖函數&#xff08;簡稱視圖&#xff09;&#xff0c;本質上就是一個Python函數&#xff0c;用于接收Web請求并且返回Web響應。Web響應可以包含很多類型&#x…

QT文件操作(QT實操學習3)

1.項目架構 1.UI界面 1.新建文本文檔 2.打開文件 3.另存為文件 2.mainwindow.h? #ifndef MAINWINDOW_H #define MAINWINDOW_H#include <QMainWindow> #include <QFileDialog> #include <QMessageBox> #include <QDebug> QT_BEGIN_NAMESPACE namespa…

HX324雙運算放大器:賦能萬物互聯時代的信號處理基石

一、運算放大器行業的技術演進與市場需求 在全球半導體市場規模突破6000億美元的背景下&#xff0c;模擬芯片作為電子系統的"感官神經"&#xff0c;正迎來智能化升級浪潮。據IC Insights數據顯示&#xff0c;2023年全球運算放大器市場規模達32.7億美元&#xff0c;其…

C++ 結構體與函數

一.結構體 1.概念&#xff1a; 結構體&#xff08;struct&#xff09;是一種用戶自定義復合數據類型&#xff0c;其中可以包含不同類型的不同成員 2.結構體的應用場景&#xff1a; 我們在使用多個變量描述一個對象時&#xff0c;雖然也可以做到&#xff0c;但是難免顯得雜亂…

Python數據可視化-第1章-數據可視化與matplotlib

環境 開發工具 VSCode庫的版本 numpy1.26.4 matplotlib3.10.1 ipympl0.9.7教材 本書為《Python數據可視化》一書的配套內容&#xff0c;本章為第1章 數據可視化與matplotlib 本文主要介紹了什么是數據集可視化&#xff0c;數據可視化的目的&#xff0c;常見的數據可視化方式…

ESLint報錯:Could not find config file.

如果你的ESLint的版本大于 8&#xff0c;同時使用 .eslinrc.js 和 .eslintignore 作為配置文件&#xff0c;且目前用的是 VSCODE &#xff0c;就有可能遇到報錯&#xff1a; Could not find config file. 這個是因為 VSCode 中 ESLint 插件的配置 eslint.useFlatConfig 的問題…

基于SpringBoot的“醫療設備管理系統”的設計與實現(源碼+數據庫+文檔+PPT)

基于SpringBoot的“醫療設備管理系統”的設計與實現&#xff08;源碼數據庫文檔PPT) 開發語言&#xff1a;Java 數據庫&#xff1a;MySQL 技術&#xff1a;SpringBoot 工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系統展示 系統總體功能模塊圖 系統E-R圖 系統登錄界面 …

WordPress漢主題

WordPress漢主題wphan.com(以下簡稱WP漢主題)是一個專注于WordPress中文主題與插件開發的專業團隊。該團隊致力于為中文用戶提供高質量的WordPress主題和插件資源&#xff0c;幫助用戶輕松創建專業且吸引人的網站。 WP漢主題提供多種功能豐富的WordPress主題&#xff0c;涵蓋博…

arthas之jvm相關命令

文章目錄 1. dashboard2. thread線程相關3. jvmTHREAD相關文件描述符相關 4. sysprop5. 小結6. sysenv7. vmoption8. getstatic9. ognl10. 小結 1. dashboard 作用&#xff1a;顯示當前系統的實時數據面板&#xff0c;按q或ctrlc退出 數據說明 ID: Java級別的線程ID&#xff…

小米平板 4 Plus 玩機日志

在一次偶然中&#xff0c;我從一個角落中找到了這臺小米平板 4 Plus&#xff08;是的&#xff0c;現在正在用這個平板寫這篇文章&#xff09;。在找到她的時候&#xff0c;她已經奄奄一息了&#xff0c;即使按動那脆弱的電源鍵也沒有任何響應。 在給她補充能源后&#xff0c;她…

MSYS2學習筆記

前言 本文內容是MSys2 Documentation的學習筆記可以使用MSYS2編譯QGis 學習筆記 什么是MSYS2&#xff1f; MSYS2&#xff08;Minimal System 2&#xff09;是一個為Windows平臺打造的軟件開發環境和包管理系統&#xff0c;它結合了Cygwin的POSIX兼容層、Arch Linux的pacman…

gnvm切換node版本號

1. gnvm下載官網 GNVM - Node.js version manager on Windows by Go 2. 安裝 2.1 不存在 Node.js 環境 下載并解壓縮 gnvm.exe 保存到任意文件夾&#xff0c;并將此文件夾加入到環境變量 Path。 2.2 存在 Node.js 環境 下載并解壓縮 gnvm.exe 保存到 Node.js 所在的文件夾。 2.…

目標檢測 AP 計算 實例 python

以下是使用 Python 實現目標檢測中 ?Average Precision (AP)? 計算的完整實例&#xff0c;包含代碼和注釋。這里以 ?Pascal VOC 標準? 為例&#xff08;IoU閾值0.5&#xff09;。 步驟1&#xff1a;準備數據 假設&#xff1a; gt_boxes: 真實標注框列表&#xff0c;格式為 …