我們今天要學習如何使用簡單的wpf控制項。在本節中我們將通過乙個簡單的演示程式,向大家展示如何使用幾個常見且簡單的控制項,並且領略wpf的ui元素自由組合的思想。還要學習wpf的一項重要的特性——資料繫結,該功能將令資料呈現和處理變得輕鬆和有趣。不用擔心,編寫這些具有wpf特性的程式將比你想象中簡單!
首先,我們的這個演示程式要實現下面的目標:
ok,下面我們開始啦喔!
我們在visual studio 2008新建乙個wpf視窗專案,並開始調整我們的視窗(大小、標題等)。接著如下圖所示,我們從工具箱中拖放幾個控制項,上端的是textblock,下面是label和textbox。其中textblock是用來顯示文字的。textbox也有類似的功能,不過可以用來輸入和編輯文字。
大家可以適當調整他們的外觀,比如foreground(前景色),background(背景色),button的content(內容)屬性等。
為了程式設計的方便,我們在安放控制項的時候,都不要忘記都給他們改乙個好記的名字(在屬性欄的頂端,輸入name屬性)。label控制項的名字為lbinput,textbox控制項的名字為tbinput,textblock控制項的名字為tbkoutput,button控制項的名字為btnexit。
大家剛開始接觸wpf的時候,肯定會有點奇怪,label和textblock都可以用來顯示唯讀文字,那麼究竟label有什麼不同呢?label其實通常不是單獨出現的,label一般是他旁邊的控制項(本例中的textbox)的說明標識,最重要的是label可以利用快捷鍵使它的目標控制項取得焦點。這下明白啦嘛,label可以讓其他控制項得到快捷鍵的功能(即游標立刻移動到該控制項),方便使用者的操作。
為了使label控制項具有快捷鍵,我們還需要修改它的內容屬性。在它的content屬性裡面輸入「_input here: 」,其中「_」會成為後面的字母的下劃線,它的作用是使此字母成為快捷鍵。另外我們還需要定製究竟它為誰(什麼控制項)服務,我們還需要在xaml**中加入target屬性。xaml的label片段如下:
<label
horizontalalignment
="left"
margin
="12,0,0,102"
name
="lbinput"
width
="84"
height
="28"
verticalalignment
="bottom"
target
="">
_input here:
label
>
這樣我們在按下alt+i的時候,tbinput將會獲得焦點,不妨執行試試。資料繫結是wpf中的重要功能,可以令某ui元素中的屬性與某物件的變數進行繫結,這樣當某一方發生改變時,可以立即更新到繫結的目標上。資料繫結為資料傳遞建立了一種強大而簡易的方式,為開發者省去了很多處理資料同步的程式**。如本例當中,我們演示資料繫結,令tboutput中的內容始終與tbinput中的內容同步,讓使用者輸入的內容可以立即顯示出來。
我們要在tbkoutput中把text屬性與tbinput的text屬性繫結起來,要在xaml中為tbkoutput中的text屬性新增繫結物件,**如下:
<在**中,我們可以看到,text屬性中是乙個花括號包含的內容,這表示要顯示的是這個物件的資訊,而不是這些字元。在這個binding物件中elementname屬性指示需要繫結哪個控制項,path屬性指示需要繫結的屬性。在這裡完成了tbkoutput的text屬性與tbinput的text屬性的繫結。效果如下圖所示,實現了同步輸出:textblock
height
="37"
margin
="12,50,12,0"
name
="tbkoutput"
verticalalignment
="top"
fontsize
="20"
foreground
="white"
background
="lightblue"
text
=""/>
不過這個效果實在太單調了,wpf又怎會這麼枯燥呢,我們可以完全定製tooltip。因為在wpf中,tooltip是乙個容器,不只是字串,這意味著你可以自由搭配,安放任何物件。其實在wpf中,很多控制項都有這樣功能,如button等,利用這種自由搭配的思想可以極大地豐富我們的程式。現在我們利用xaml**對tooltip進行改造,為其新增影象和文字格式。
首先,我們在vs中新增影象檔案到工程資料夾。在解決方案資源管理器中,右擊專案,選擇新增-現有項,選擇一些影象新增到專案中,如下圖所示。然後在屬性中更改複製到輸出目錄屬性為始終複製。
text="提示"
fontweight="bold"
fontsize="18"
/>
<
textblock
text="請在這裡輸入你想顯示的內容"
foreground="#ff555555"
padding="6"
/>
stackpanel
>
stackpanel
>
textbox.tooltip
>
textbox
>
關於stackpanelstackpanel是乙個容器,是乙個供控制項安放在上面的面板,是wpf諸多面板中最為常用的面板之一,它的最大特點就是,控制項按順序乙個挨著乙個排列,可以用orientation屬性控制其排列方向(垂直或者水平)。執行一下,漂亮的效果出來了,我們同理可以為退出按鈕新增定製的tooltip。
最後,我們需要為退出按鈕新增要執行的**。方法很簡單,只要雙擊該按鈕,就會自動生成相應點選動作的方法。在這裡我們之需要新增關閉視窗的**就可以了,如下:
privatevoid btnexit_click(object sender, routedeventargs e)
這樣我們的程式就大功告成了。關於資料繫結的使用,我們以後還會進一步學習,畢竟這是wpf中必須掌握而且是解放勞動力的重要功能!
WPF學習總結和記錄(二)內容控制項
帶header的控制項。它們在主內容上新增了乙個自定義header,這種控制項從contentcontrol 的headeredcontentcontrol 子類繼承而來,而該子類新增了乙個object 型別的header 屬性。1.groupbox groupbox 通常被用來包含多個項,但是由於...
WPF學習總結和記錄(四)Items控制項下
1.listview listview 從listbox 繼承而來,不管是從外觀還是實際的操作上都很像listbox,除了它預設使用擴充套件的selectionmode。但是listview 也新增乙個叫作view 的屬性,它允許你把檢視定義為比選擇乙個自定義的itemspanel 更豐富的樣子。1...
Redis的學習筆記04
4 操作list 概述 列表的元素型別為string,按照插入順序排序,在列表的頭部或者尾部新增元素 1 設定 a 在頭部插入 lpush key value vlaue.vlaue可以有多個 b 在尾部插入 linsert key beforelafter pivot value c 在乙個元素的...