WPF一篇解決

之前常常使用的是Winform做窗體應用,突然接到一個被公司裁掉的同事手頭穿下來的一套祖傳WPF項目,於是決定用1天的時間熟悉熟悉WPF,學一天的時間足夠給他祖傳的代碼修修改改了。

初識WPF的界面感覺比WinForm做的好看,仔細想想這個也是應該的,MFC->winform->wpf,沒有進步,微軟家的開發團隊就變成吃白食的了。.NET Framework 3.0以後纔有,因此需要安裝高版本框架。

細看WPF的語法內容,主要是基於XAML技術,其實就是把之前的窗體寫在窗體類中用XAML將其分離,好處就是,前端的可以安安心心的畫圖了。當然技術的內部實現也沒有細細研究,猜想了一下感覺有點類似於用的一個腳本翻譯器不停的翻譯XAML腳本。

下面是重點

控件 contorl

這個控件的定義和Winfrom中是一樣的,將一類相同操作的抽象。
https://zh.wikipedia.org/zh-hans/%E6%8E%A7%E4%BB%B6

控件被創建後命名很重要,當前頁被用漢語拼音首字母做控件名的同事坑過,所以避免坑三個月後自己和“心愛”的同事,請遠離不規範命名。

說到控件就不得不說Focus,焦點,控件是否處於交互狀態就是就是由這個Focus決定,
EX:要講一個按鍵“F5”傳給窗體上一個控件,就需要先讓這個控件獲得焦點,而獲得焦點最常見的方法就是用鼠標點擊這個控件,那麼這裏又想把F5傳遞給主窗體,那麼如何做呢,可以用一個一個事件將F5傳遞給主窗體

佈局中的控件,最常用的就是Width和Height,這裏是以容器的左上角爲原點,左到右,上到下依次增大。

是控件就必然需要事件的支持,界面和邏輯的聯繫就是在於一個事件,有實踐,必然就有回調函數。
事件調用中最常見的參數就是Sender,其實就是把觸發事件的對象自己傳遞過去,因此這個參數一般是用Object傳遞過去。
Sender常見的用法:觸發事件的控件,得到控件先做類型轉換,數據綁定的時候用到。這種用法可以讓一個事件回調函數被多個控件的事件調用。

手寫XMAL

學從難出學,用從易處用,多麼好的一句話,一天的時間不多,但如果只是拖拖控件什麼的,那就太太多了,完全是在消磨時間。
控件中常用的屬性是下面幾個
IsEnable 是否使能,使能簡單理解就是使其能使用
Visibility 可見
Background背景格式
Foreground 填充顏色
FontSize 字體大小
IsReadOnly 只讀
TextWrapping 折行
MaxLength最大數量

常用控件

Button
TextBox
PasswordBox
TextBlock
RadionButton
Image
CheckBox
Grid
ListBox
StackPlanel
Menu
ToolBar

可空類型

在WPF中很多控件的傳入值和返回值是可空類型
int i;
這時 i的值是默認值0;
int? i;
這時i 只是一個標籤 i=NUll,在沒有賦值時去調用它做運算,運行時是回報錯的。
第一個i是值類型,第二個i是引用類型
猜想啊。底層是把原本放在棧中的一個值放入了堆中,而這個i只是指向堆中的一個地址

控件細節用法

RadioButton 使用GroupName進行分組
DatePicker日期控件 不選用任何日期時DateTime爲Null
DateTime.ToDay 只顯示日期 New顯示到時分秒
Image 控件 source 顯示的圖片的路徑
ProgressBar 進度條 Mininum Maximum Value Height
IsIndeterminate不確定模式,滾動條會不停運動

頁面控制

控制子控件的大小和位置格式
常用的控件有
StackPlane堆疊排列
Orienttion Horizontal
button中Content可以是一副圖片,文本框等等只能設置一個又想設置兩個
VerticalAlignment佈局
stackPanel做大房東

Grid 表格
columDefinitions列 Width
RowDefiniton行 Hight
Margin 邊緣距離
將控件固定到對應的表格中,需要使用時要綁定附加屬性
Ex:TextBox text=“00” Grid.Row=“1” Gide.Column=“1”

DockPanel 靠邊容器
DockPanle.Dock 可以選擇上下左右機種不同的形式

多窗口

在項目下創建一個新的WPF窗體,在啓動的一個窗體中New,然後調用Show方法就可以使用

傳入值

可以在夠着函數中傳入,和winForm一樣

返回值

DialogResult = true;這個值設定後,窗體會自動調用Close;

初略看去其實Wpf和Winform沒有太大區別,winForm可以乾的是Wpf全部都可以幹,同時Wpf更加靈活,所有後期可以說適當更新技術,與時俱進。
上面實現的代碼可查看我的下載

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章