Upload
hoang-tua-nguyen
View
247
Download
0
Embed Size (px)
Citation preview
8/7/2019 WPF-Lesson 1 - Layout
1/16
Microsoft Vietnam DPE Team | WPFBi 1:B tr giao din trong ng dng WPF 1
Bi 1
B TR GIAO DIN TRONG NG DNG WPF
Bi ny gii thiu cch thc b tr giao din trong ng dng WPF . Phn us gii thiu v cc
dngpanel, mt s i mi trong phng thc b tr giao din cang dng WPF so vi MFC, VB Forms
hay ngay c Windows Forms nhm tng tnh linh hot. Sau , cc dng panel thng dng cng vi c tnh
ca chng s c trnh by thng qua cc v d n gin.
1 Gii thiu chungNh gii thiu trong bi m u, WPF s dng cc dng panelkhc nhau b tr cc
phn t trn giao din ngi dng. iu ny xut pht t tng kt hp cng ngh giao din mnh
nh Windows Forms, vi cc k thut sp t (layout) ca trnh duyt nhm nng cao tnh linh hot
trong vic b tr cc phn t trn giao din.
Cc cng ngh xy dng giao din nh VB6 form, Access formsda trn nguyn tc b
tr theo v tr tuyt i. Ngha l, ngi lp trnh phi xc nh gi tr ta gc trn bn tri ca
mt control (so vi vi gc trn bn tri ca mt form) khi mun t n ln form. iu ny cho
php lp trnh vin iu khin v tr ca control kh d dng, nhng li thng i hi mt lng
ln m trnh khi cn thay i kch thc form. y l phng php tip cn theo hng p t
(imperative), trong my tnh c ch r phi lm nhng bc g, khi no v theo trnh t no .
Vi cch thc b tr ny, cc iu khin nh Label hay Panel khng t ng ko gin ph hp
vi kch thc phn ni dung cha trong n. V nh vy, nu phn ni dung ca mt Label ln hn
vng c th hin th ca Label , th ni dung ny s b ct i hoc b che lp.
Trong khi , cc phn t giao din Web trn trnh duyt c sp xp theo phng thckhai bo (declarative), trong , ngi lp trnh ch a ranhng th cn lm, cn my tnhs gii
quyt vn lm nh th no. Vi phng thc ny, giao din trn trnh duytkhng i hi m
trnh thay i kch thc cc vng cha (containner). HTML cho php ta nh ra mt chui cc
vng cha, v d nh cc phn t , , v , b tr cc phn t UI khctrong
mt cch linh ng bn phi hoc bn tri mt i tng; hay cng c th sp xp chng theo v tr
8/7/2019 WPF-Lesson 1 - Layout
2/16
Microsoft Vietnam DPE Team | WPFBi 1:B tr giao din trong ng dng WPF 2
tuyt i trn trang Web. Cc phn t nh quan tm ti kch thc bn trong ni dung ca n
v s t nggin ra cha ni dung bn trong.
Tuy nhin, c hai cch tip cn nu trn u kh c th t c cch b tr nh , mc d
cch b tr trn trnh duyt c gim lng code x l. Hin nay, Windows Forms athm nhngkhi nim nhDocking (cpbn) hayAnchoring(bung neo), b sung mt cch tip cn kiu khai
bo linh hot hn pht trin cc ng dng trn my trm. WPF tip bc xu hng ny vi vic
b tr giao din da trn khi nim vpanel.
Phn ln cc phn t UI trong ng dng WPF ch cth cha duy nht mt phn t con.
Chng hn, on m XAML sau s mc li bin dch sau: The 'Button' object already has a child
and cannot add 'CheckBox'. 'Button' can accept only one child." Ngha l, i tng nt bm
Button cha mt phn t con (c th l i tng TextBlock) v do , khng th thm vo
mt i tng CheckBoxhay ComboBoxna.
on m XAML sau ykhng bin dch c
Cho mng bn n vi bi 1 - Gii thiu v WPF Layout
nt bm ny c th cha 3phn t con bn trong n, WPF s dng panel. C nhiu dng panel
khc nhau trong WPF v mi dng cho php mt kiu b tr giao din khc nhau. Cc panel c th lng vo
nhau cho php b tr cc phn t trn giao din nhng dng sp xp bt k. V d, sa vn nu ra v
d trn, ta c th lng mt StackPanel bn trong nt bm, v b tr cc phn t con bn trong panel .
on m XAML sau y cho php 1 nt bm cha c text, checkbox v combobox
8/7/2019 WPF-Lesson 1 - Layout
3/16
Microsoft Vietnam DPE Team | WPFBi 1:B tr giao din trong ng dng WPF 3
Cho mng bn n vi bi 1 - Gii thiu v WPF Layout
Kt qu bin dch s l:
Hnh 1.1Kt qu sa i on m XAML hin th hn mt phn t giao din con
trong mt nt bm s dng StackPanel
2 Cc dng Panel thng dng bn c thy c vai tr quan trng ca panel trong vic b tr giao din, phn sau y sln
ltgii thiu nhng dng panel thng dng v cc c tnh ca chng thng qua cc v d n gin.
2.1 StackPanelStackPanelb trcc phn t con nm trong n bng cch sp xp chng theo th t trc
sau. Cc phn t s xut hin theo th t m chng c khai bo trong file XAML theo chiu dc
(ngm nh) hoctheo chiu ngang.
2.1.1 Sp xp theo chiu dc
Sau y l on m XAML minh ha vic sp xp cc phn t UI trong mt i tng
Windowbng StackPanel theo chiu dc:
8/7/2019 WPF-Lesson 1 - Layout
4/16
Microsoft Vietnam DPE Team | WPFBi 1:B tr giao din trong ng dng WPF 4
Control 1
Control 2
Control 3
Kt qu l:
Hnh 1.2Sp xp nhiu control theo th t k tip trnxung di s dng StackPanel
8/7/2019 WPF-Lesson 1 - Layout
5/16
Microsoft Vietnam DPE Team | WPFBi 1:B tr giao din trong ng dng WPF 5
Trong trng hp sp xp theo chiu dc, nu tng chiu cao ca cc phn t con ln hn chiu cao
ca form cha, th cc phn t nm ngoi form s khng c nhn thy.
2.1.2 Sp xp theo chiu ngang
Sau y l on m XAML minh ha vic s dng StackPanel sp xp cc phn t UI
cng v d trn theo chiu ngang. im khc bit duy nht y l thit lp thm thuc tnh
Orientation="Horizontal" ca i tng StackPanel c s dng.
Control 1
Control 2
Control 3
V kt qu s l:
Hnh 1.3Sp xp nhiu control theo th tk tip tri sangphis dng StackPanel
8/7/2019 WPF-Lesson 1 - Layout
6/16
Microsoft Vietnam DPE Team | WPFBi 1:B tr giao din trong ng dng WPF 6
Trong trng hp sp xp theo chiu ngang, nu tng chiu rngca cc phn t con ln hn chiu
rngca form cha, th cc phn t nm ngoi form s khng c nhn thy.
2.2 WrapPanelWrapPanelcho php sp xp cc phn t t tri sang phi. Khi mt dng phn t in
y khong khng gian cho php theo chiu ngang, WrapPanel s cun phn t tip theo xung u
dng tip theo (tng t nh vic cun text).
Di y l mt v d n gin v vic s dng WrapPanel:
Ch co co nh, ngi trong m c
Control 2
Control 3
Do chiu di tng cng ca 3 control ln hn chiu di ca Window, ng thi, chiu di
ca 2 control u (TextBlock v Button) nh hn chiu di Window, WrapPanel s xp TextBlock
cui cng xung hng di. Kt qu l:
8/7/2019 WPF-Lesson 1 - Layout
7/16
Microsoft Vietnam DPE Team | WPFBi 1:B tr giao din trong ng dng WPF 7
Hnh 1.4S dng WrapPanel
2.3 DockPanelDockPanel cho php cc phn t bm ln cc cnh ca panel DockPanel bao cha chng,
tng t nh khi nim Docking trong Windows Forms. Nu nh c nhiu phn t cng bm v
mt cnh, chng s tuntheo th t m chng c khai bo trong file XAML.Sau yl on m
XAML minh ha vic s dng DockPanel:
Control 1
Control 2
Control 3
Control 4
Control 5
Phn t Border cui cng s in vo phn khng gian cn li v thuc tnh DockPanel.Dock
khng xc nh. Kt qu l:
8/7/2019 WPF-Lesson 1 - Layout
8/16
Microsoft Vietnam DPE Team | WPFBi 1:B tr giao din trong ng dng WPF 8
Hnh 1.5S dng DockPanelControl 1 bm vo cnh trn DockPanel,
Control 2 v 4 nm bn phi, Control 3 nm di y; Control 5 chim ton b khng gian cn
li.
2.4 CanvasPanel dng Canvass dng phng thc sp xp cc phn t UI theo v tr tuyt i bng
cch t thuc tnh Top (nh) v Left (bn tri) ca chng. Thm vo , thay v t thuc tnh
Top, Left, ta c th t thuctnh Bottom (y), Right (bn phi). Nu ta t ng thi thuc tnh
Left v Right, thuc tnh Right s b b qua. Phn t UI s khng thay i kch thc tha mn 2
thuc tnh trn cng mt lc. Tng t thuc tnh Top s c u tin hn thuc tnh B ottom. Ccphn t c khai bo sm hn trong file XAML s c th b che khut pha di cc phn t c
khai bo mun hn nu v tr ca chng xp chng ln nhau.
Sau y l mt v d minh ha vic s dng Canvas sp xp cc phn t UI.
Ch co co nh, xanh nh ht
Control 2
8/7/2019 WPF-Lesson 1 - Layout
9/16
Microsoft Vietnam DPE Team | WPFBi 1:B tr giao din trong ng dng WPF 9
Control 3
V tr ca phn t TextBlock u tin v phn t Border c t theo thuc tnh Top, Left,
trong khi , phn t Button c sp v tr theo thuc tnh Bottom, Right. Border s nm chng ln
TextBlock u tin v c s xp chng v v tr ca hai phn t ny. Thm vo , TextBlock u
c khai bo trc Border trong on m XAML. Kt qu l:
Hnh 1.6S dng Canvas sp xp cc phn tUI
2.5 Grid
Panel dng Gridl dng panel ht sc linh hot, v c th s dng t c gn nh ttc kh nng m cc dng panel khc c th lm c, mc d mc kh d khng ging nhau.
Grid cho php ta phn nh cc dng v ct theo dng mt li k , v sau s sp t cc phn
t UI vo cc ty . Grid s t ng chia u cc dng v ct (da trn kch thc ca phn ni
dung). Tuy nhin, ta c th s dng du sao (*) phn nh kch thc theo t l hoc phn nh
gi tr tuyt i v chiu cao hoc chiu rng cho hng v ct.Ta c th nhn bit s khc bit ca 2
dng phn nh kch thc nu trn bng cch thay i kch thc ca form cha panel Grid. Thm
vo , thuc tnh ShowGridLines c t bng True cho php hin th cc ng k . Sau y l
mt v d minh ha v vic s dng Grid vi hai dng phn nh:
8/7/2019 WPF-Lesson 1 - Layout
10/16
Microsoft Vietnam DPE Team | WPFBi 1:B tr giao din trong ng dng WPF 10
Ch co co nh
Control 2
Control 3
Sau y l kt qu:
8/7/2019 WPF-Lesson 1 - Layout
11/16
Microsoft Vietnam DPE Team | WPFBi 1:B tr giao din trong ng dng WPF 11
a) Trng thi khi to b) Sau khi thay i kch thc form
cha Grid
Hnh 1.7S dng Grid sp xp cc phn t UI Khi kch thc form cha Grid thay
i, chiu cao ca hng 1 lun c nh (25pixel), trong khi , chiu cao ca hng 2 lun gp i
hng 1; chiu rng ca ct 0 lun gp i chiu rng ca ct 1.
8/7/2019 WPF-Lesson 1 - Layout
12/16
Microsoft Vietnam DPE Team | WPFBi 1:B tr giao din trong ng dng WPF 12
Cu hi n tp
1. ng dng WPF s dng cch tip cn no b tr cc phn t trn giaodin ngi dng?
A. Phng thc p t (imperative)B. Phng thc khai bo (declarative)C. C hai phng thc trn
Cu tr li: C
2. Tr cc dng panel, cc phn t UI trong WPF nh Label, Button chophp cha ti a bao nhiu phn t con?
A. 0B. 1C. 2D. Khng gii hn s lng
Cu tr li: B
3. Vit m trnh bng C# t c kt qu tng t nh on m XAMLtrong mc 2.1.2.
M trnh C# v d:
public Window7()
{
InitializeComponent();
//
//t thuc tnh ca s chnh
this.Height = 100; //chiu cao
this.Width = 300; //chiu rngthis.Title = "Lesson 1 - StackPanel"; //nhan
//
//To StackPanel
StackPanel stackPanel = newStackPanel();
stackPanel.Background = newSolidColorBrush(Colors.Beige); //t thuc tnh mu nn
stackPanel.Orientation = Orientation.Horizontal; //t hng sp t
8/7/2019 WPF-Lesson 1 - Layout
13/16
Microsoft Vietnam DPE Team | WPFBi 1:B tr giao din trong ng dng WPF 13
//
//To i tng Border 1
Border border1 = newBorder();
border1.Width = 90;
border1.Height = 90;
border1.BorderBrush = newSolidColorBrush(Colors.DarkSlateBlue); //t mu ng vin
border1.Background = newSolidColorBrush(Color.FromRgb(169, 233, 105));
border1.BorderThickness = newThickness(2); //t dy ng vin
//
//To i tng CheckBox
CheckBox checkbox = newCheckBox();
checkbox.Content = "Control 1"; //t ni dung text ca CheckBox
//
//t CheckBox vo trong Border 1border1.Child = checkbox;
//
//To i tng Button
Button button = newButton();
button.Width = 90;
button.Height = 90;
button.Content = "Control 2";
//
//To i tng Border 2Border border2 = newBorder();
border2.Width = 90;
border2.Height = 90;
border2.BorderBrush = newSolidColorBrush(Color.FromRgb(254, 202, 0));
border2.BorderThickness = newThickness(2);
//
//To i tng TextBlock
TextBlocktextBlock = newTextBlock();
textBlock.Text = "Control 3";
//
//t TextBlock vo trong Border 2
border2.Child = textBlock;
//
//t cc i tng to vo trong StackPanel
8/7/2019 WPF-Lesson 1 - Layout
14/16
Microsoft Vietnam DPE Team | WPFBi 1:B tr giao din trong ng dng WPF 14
stackPanel.Children.Add(border1);
stackPanel.Children.Add(button);
stackPanel.Children.Add(border2);
//
//t StackPanel vo ca s chnh
this.Content = stackPanel;
}
4. Vit m XAML s dng Grid t kt qu tng t nh on m trongmc 2.3.
Gi : S dng nhiu Grid lng nhau.
M XAML vi d:
Control 1
8/7/2019 WPF-Lesson 1 - Layout
15/16
Microsoft Vietnam DPE Team | WPFBi 1:B tr giao din trong ng dng WPF 15
Control 5
Control 4
Control 3
8/7/2019 WPF-Lesson 1 - Layout
16/16
Microsoft Vietnam DPE Team | WPFBi 1:B tr giao din trong ng dng WPF 16
Control 2
Ti liu tham kho
1. MSDNWindows Presentation Foundation - The Layout System.http://msdn.microsoft.com/en-us/library/ms745058.aspx
2. How can I control the layout of items in WPF? URL:http://learnwpf.com/Posts/Post.aspx?postId=c76411d6-5350-4a10-b6bb-f1481c167ecf
3. Why WPF Rocks (Custom Layout Panel Showcase).http://dotnet.org.za/rudi/archive/2008/04/15/why-wpf-rocks-custom-layout-panel-
showcase.aspx