02-WPF_基礎(一)

?1、基礎

各模塊類型

鏈接:如何:向 Viewbox 的內容應用 Stretch 屬性 - WPF .NET Framework | Microsoft Learn

WPF基礎以及事件綁定與數據綁定的情況,,在學習XAML,數據結構以及一個項目學習平臺來練手,網絡編程與數據通信,空壓機啥的項目。;

1、項目文件簡介

1.1、AppConfig

配置文件或者數據庫,連接字符串,配置信息

2、App.xaml

設置應用程序起始文件,系統級資源。

StartupUri="MainWindow.xaml">? ?意思為指定起始文件? ?為MianWindow.xaml

<Application.Resources>? ?定義整個WPF應用程序的相關資源。

一個xaml至少包括兩個命名空間:默認的;帶x前綴的;

3、App.xaml.cs?

app.xaml的后臺類文件

4、MainWindow.xaml

Window--WPF應用程序界面與xaml設計文件

5、Mainwindow。xaml.cs??

xaml窗口文件的后臺代碼文件

2、事件驅動與數據驅動

1、事件驅動

Winform主要的模式

委托綁定

2.1、數據驅動

WPF主要的模式:數據驅動與綁定

1、MainWindow:

此時需要定義:mainViewModel? _mianViewModel=newmainViewModel();? ?

this.DataContext=_mainViewModel;

    /// <summary>/// MainWindow.xaml 的交互邏輯/// </summary>public partial class MainWindow : Window{mainViewModel mainViewModel = new mainViewModel();public MainWindow(){InitializeComponent();// mainViewModel = new mainViewModel(this);   //  實例化類,建立連接this.DataContext= mainViewModel;    //  實例化綁定連接}private void Button_Click(object sender, RoutedEventArgs e){業務邏輯//mainViewModel.Value = "10";}}

上述是數據綁定的格式

2、mainViewModel

這個定義待綁定的事件:繼承INotifyPropertyChanged

public? event PropertyChangedEventHandler PropertyChanged

PropertyChanged?.Invoke(this,new PropertyChangedEventArgs("具體需要執行的")

    public class mainViewModel:INotifyPropertyChanged{//  這種綁定方式//MainWindow _mainWindow;//public mainViewModel(MainWindow mainWindow)//{//    _mainWindow = mainWindow;//}public event PropertyChangedEventHandler PropertyChanged;  //  需要定義事件 eventprivate string _value="ZHAOXI";public List<ValueModel> ValueList {  get; set; }=new List<ValueModel> { new ValueModel{Value = "123", Name="AAA"},new ValueModel{Value="456", Name="BBB"}};public string Value {get { return _value; }set{_value = value;//_mainwindow.tbName.text = value;PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("Value"));   //  此句放在屬性改變后語句之后if (value == "10"){ValueColor= Brushes.Red;// this.txName.Foreground=Brushes.Red;}(this.ValueCommand as CommandBase).RaiseChanged();}}private Brush _valueColor = Brushes.Orange;public Brush ValueColor{get { return _valueColor; }set{_valueColor = value;PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("ValueColor"));}}private ICommand valueCommand;//  屬性public ICommand ValueCommand { get { if(valueCommand==null){valueCommand = new CommandBase() { DoAction = new Action<object>(ValueCommandAction), DoCanExecute = new Func<object, bool>(CanExecute) };}return valueCommand; }set { valueCommand = value; }}private void ValueCommandAction(object obj){Value = "10";}public bool CanExecute(object obj){return !string.IsNullOrEmpty(Value);}}

3、ICommand

事件點擊問題

    internal class CommandBase : ICommand{public event EventHandler CanExecuteChanged;//public event EventHandler CanExecuteChanged  //  此為事件定義和聲明 也可為public event EventHandler CanExexuteChanged;//{//    add//    {//        throw new NotImplementedException();//    }//    remove//    {//        throw new NotImplementedException();//    }//}public bool CanExecute(object parameter){// 綁定了這個命令的按鈕是否能用return DoCanExecute?.Invoke(parameter)==true;  ///  當等于true才觸發}public void Execute(object parameter)  //  parameer  這個參數為commandparameter這個控件屬性{// 執行邏輯DoAction?.Invoke(parameter);}public Action<object> DoAction { get; set; }public Func<object, bool> DoCanExecute { get; set; }public void RaiseChanged(){CanExecuteChanged?.Invoke(this,new EventArgs());}}

4、ValueModel

此模塊是為了在右邊顯示

    public class ValueModel{public string Value { get; set; }public string Name { get; set; }}

上述是數據綁定的格式:

后續包括:布局控件、資源樣式、模板、依賴屬性、數據綁定、圖形、事件與行為、動畫等。

2.3、路徑

路徑:imgPic.Source=new BitmapImage(new Uri("image/12window.png",UriKind.Relative);

URI:(全稱:Uniform Resource Identifier)統一資源標識符,它是一個字符串用來標示抽象或物理資源。

Web上可用的每種資源( HTML文檔、圖像、音頻、視頻片段、程序等)都由一個通用資源標識符(Uniform Resource Identifier, 簡稱”URI”)進行定位。

URI的格式也由三部分組成:

  1. 訪問資源的命名機制。
  2. 存放資源的主機名。
  3. 資源自身的名稱,由路徑表示。

相對路徑

.資源的生成操作為Resource

//  相對路徑
//  命名控件引入using System.Windows.Media.Imaging;才可以直接用
imgPic.Source = new BitmapImage(new Uri("image/12window.png", UriKind.Relative)); //  Source  --- ImageSource

絕對路徑:??

WPF支持兩種授權:pack URI方案?application:///和? siteoforigin:///。

但是用siteoforingin替換application時候需要將圖片資源的屬性面板里的生成操作里將Resource改為內容才可以執行。注意兩種方式路徑的書寫方式

//? 授權? 指定包含不見得程序包的類型,而路徑, 則指定部件在程序包中的位置。

// ?絕對路徑Absolute
? ? ? ? ? ? // WPF支持兩種授權: pack://application:,,,/和??pack://siteoforigin:,,,//。
? ? ? ? ? ? //??授權??指定包含不見得程序包的類型,而路徑, 則指定部件在程序包中的位置。

// imgPic.Source = new BitmapImage(new Uri("pack://application:,,,/image/12window.png", UriKind.Absolute));imgPic.Source=new BitmapImage(new Uri("pack://application:,,,/image/12window.png",UriKind.Absolute));//imgPic.Source = new BitmapImage(new Uri("pack://siteoforigin:,,,//image//12window.png", UriKind.Absolute));

第三種方式:

// 第三種方式
// 實際讀取的是E:\SoftStudy\C#\C#\基礎\01WPF基礎\02控件_1\bin\Debug路徑里的image/12window.png文件,與image里的生成操作方式無關

private void Button_Click(object sender, RoutedEventArgs e){imgPic.Source=new BitmapImage(new Uri(AppDomain.CurrentDomain.BaseDirectory+"image/12window.png",UriKind.Absolute));}

?3.2、XAML

定義:為定義用戶界面創建的一種新的“可擴展的程序標記語言”。

需要命名空間:但是不太一樣

下圖像網址一樣:

xaml命名空間格式:引用命名空間:xmlns:(前綴名)=“命名空間描述”;

自定義類或程序集映射語法:xmlns:(必選前綴)=“clr-namespace:(命名空間); assemly=(程序集名稱)”;

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

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

相關文章

兒童社交恐懼:關愛與引導,幫助孩子走出陰霾

引言 兒童的社交能力是其心理健康和全面發展的重要組成部分。然而&#xff0c;有些兒童會表現出社交恐懼&#xff0c;這種情況不僅影響他們的日常生活和學習&#xff0c;還可能對其長遠發展產生不利影響。本文將探討兒童社交恐懼的注意事項&#xff0c;并提供實用的建議和方法…

jvm故障定位

? cpu使用率低負載高&#xff0c;原因分析-----舉例命令排查過程 原因&#xff1a;大量線程io阻塞。 建議從以下幾個方面排查代碼問題&#xff1a; 1、是否有內存泄露導致頻繁GC 2、是否有死鎖發生 3、是否有大字段的讀寫 4、會不會是數據庫操作導致的&#xff0c;排查SQL語…

百面算法工程師 | YOLOv6面試考點原理全解析

本文給大家帶來的百面算法工程師是深度學習目標檢測YOLOv6面試總結&#xff0c;文章內總結了常見的提問問題&#xff0c;旨在為廣大學子模擬出更貼合實際的面試問答場景。在這篇文章中&#xff0c;我們還將介紹一些常見的深度學習目標檢測面試問題&#xff0c;并提供參考的回答…

壓力給到 Google,OpenAI 發布 GPT-4o 來了

北京時間5月14日凌晨1點&#xff0c;OpenAI 開啟了今年的第一次直播&#xff0c;根據官方消息&#xff0c;這次旨在演示 ChatGPT 和 GPT-4 的升級內容。在早些時候 Sam Altman 在 X 上已經明確&#xff0c;「我們一直在努力開發一些我們認為人們會喜歡的新東西&#xff0c;對我…

jar包安裝成Windows服務

一、前言 很多年前寫過一篇《使用java service wrapper把windows flume做成服務》的文章&#xff0c;也是把jar包安裝成windows服務&#xff0c;今天介紹另外一種更簡便的方案。 二、正片 這次使用的工具是 winsw&#xff0c;一個Windows服務包裝器。下面看詳細介紹 首先從g…

momentjs

Moment.js 是一個用于處理日期和時間的 JavaScript 庫&#xff0c;它提供了許多方便的函數和方法來操作、格式化和解析日期時間。官網 常見用法 格式化日期時間&#xff1a;可以使用format方法將日期時間格式化為指定的字符串格式&#xff0c;例如YYYY-MM-DD HH:mm:ss。獲取日…

中國CEO直播簡史

圖片&#xff5c;電影《教父》截圖 ©自象限原創 作者丨羅輯 編輯丨程心 領導人愛對外發言這事&#xff0c;是中國的一個傳統文化。 從乾隆愛往名畫上蓋章上&#xff0c;就可見一斑。 3Q大戰時代&#xff0c;微博成了大佬“吵架”的戰場&#xff0c;飯否變成了部分愛…

解釋Java中的動態代理(Dynamic Proxy)及其用例

在Java中&#xff0c;動態代理&#xff08;Dynamic Proxy&#xff09;是一種在運行時動態創建代理類和對象的機制。它允許你在不改變原有類代碼的前提下&#xff0c;通過代理類對原有類的方法增加額外的處理邏輯&#xff08;如安全檢查、事務處理、日志記錄等&#xff09;&…

在為法人主體添加平衡段值時選不到相應的平衡段值

1、在為H1038公司添加平衡段值時&#xff0c;值集列表中無法選到需要的平衡段值&#xff0c;進一步對其后臺取值邏輯進行分析 SELECT *FROM (SELECT FLEXVALUES.FLEX_VALUE, FLEXVALUES.DESCRIPTIONFROM FND_FLEX_VALUES_VL FLEXVALUESWHERE FLEXVALUES.FLEX_VALUE_SET_ID :1…

Digimat在電池殼體SMC復合材料成型工藝中的應用

SMC工藝介紹及挑戰 SMC&#xff08;Sheet Molding Compound的縮寫&#xff0c;即片狀模塑料&#xff09;是一種復合材料制造工藝。該工藝可以有效地代替金屬&#xff0c;實現車輛輕量化目標。該工藝不僅能夠顯著降低車身重量&#xff0c;而且設計靈活&#xff0c;操作簡單、易…

社交媒體的探索者:探尋Facebook的發展歷程

在當今數字化時代&#xff0c;社交媒體已經成為了人們日常生活中不可或缺的一部分&#xff0c;而Facebook作為最具影響力的社交平臺之一&#xff0c;其發展歷程承載著無數的探索與創新。本文將深入探討Facebook的發展歷程&#xff0c;從其創立初期到如今的全球化影響&#xff0…

第 8 章 機器人底盤Arduino端電機驅動(自學二刷筆記)

重要參考&#xff1a; 課程鏈接:https://www.bilibili.com/video/BV1Ci4y1L7ZZ 講義鏈接:Introduction Autolabor-ROS機器人入門課程《ROS理論與實踐》零基礎教程 8.4.4 底盤實現_03Arduino端電機驅動 自定義電機驅動的實現與上一節的編碼器驅動流程類似&#xff1a; ROSA…

終于知道公司薪資為什么保密了!無意中拿到了部門薪資列表,自己身為小組長,只有28k,手下好幾個35k左右,心態崩了

大家好&#xff0c;我是瑤琴呀。 一直以來&#xff0c;員工不能私下談論薪資是職場公開的規定&#xff0c;入職的時候&#xff0c;HR 也會要求每個員工在保密薪資文件上簽字。 記得在大學上職業規劃課的時候&#xff0c;當時老師就給我們講過一個案例&#xff0c;公司里小李和…

數據結構與算法學習筆記九---循環隊列的表示和實現(C++)

目錄 前言 1.為什么要使用循環隊列 2.隊列的順序存儲方式的實現 1.定義 2.隊列初始化 3.銷毀 4.清空隊列 5.隊列是否為空 6.隊列長度 7.隊頭 8.入隊 9.出隊 10.遍歷隊列 11.完整代碼 3.參考資料 前言 這篇文章介紹循環隊列的表示和用法。 1.為什么要使用循環隊…

詳細分析Vue3中的defineExpose(附Demo)

目錄 前言1. 基本知識2. Demo3. 實戰 前言 其基本知識可參考官網&#xff1a;Vue3中的defineExpose 1. 基本知識 defineExpose 是 Vue 3 的 Composition API 中一個新的實用函數&#xff0c;用于在 <script setup> 語法下顯式暴露組件的公共屬性和方法 這在處理子組件…

OpenAI 重磅發布:ChatGPT Mac 桌面應用震撼上線!

OpenAI 重磅發布&#xff1a;ChatGPT Mac 桌面應用震撼上線&#xff01; 博主貓頭虎的技術世界 &#x1f31f; 歡迎來到貓頭虎的博客 — 探索技術的無限可能&#xff01; 專欄鏈接&#xff1a; &#x1f517; 精選專欄&#xff1a; 《面試題大全》 — 面試準備的寶典&#xff0…

51單片機:點亮一個LED燈

1.新建工程 選擇AT89C52&#xff0c;在Atmel下顯示的是See Microchip 并不需要添加啟動文件到文件夾中。 添加main.c文件&#xff0c;c比cpp效率高&#xff0c;.asm匯編即更底層 程序編寫好后 nop(); 該函數在這個頭文件里面 #include <INTRINS.H> #include <R…

Java JDK下載安裝教程(2024年)

博主介紹&#xff1a;?Java老徐、7年大廠程序員經歷。全網粉絲12w、csdn博客專家、掘金/華為云/阿里云/InfoQ等平臺優質作者、專注于Java技術領域和畢業項目實戰? &#x1f345;文末獲取源碼聯系&#x1f345; &#x1f447;&#x1f3fb; 精彩專欄推薦訂閱&#x1f447;&…

2024 Google I/O Android 相關內容匯總

2024 Google I/O Android 相關內容匯總 本次 Google I/O 的核心雖然是 AI &#xff0c;但是 Android 也是作為主要議題出現&#xff0c; Android 部分可以簡單分為產品和開發相關內容&#xff0c;接下來主要介紹這兩部分的相關更新。 重點開始開發相關&#xff0c;內容不少 產…

業務系統加固和安全設備加固

業務系統加固 業務系統包含哪些系統? 業務系統漏洞面臨的風險 1web風險 2漏洞掃描&#xff0c;端口掃描 3系統漏洞 4邏輯漏洞 5 信息泄露 6拒絕服務 7口令爆破 加固方式&#xff1a; 在風險加上修復 1web漏洞&#xff1a; 包括csrf,xss&#xff0c;口令破解等等 修…