7/31/2019 _WPF-Lesson 5 - Context Menu - StatusBar
1/17
Microsoft VietnamDPE Team | WPFBi 5: Thc n ngcnh (Context Menu) vthanh trng thi (Status Bar)
1
Bi 5
THC N NGCNH (CONTEXT MENU) V THANH
TRNG THI (STATUS BAR)
Thc n ng cnh (Context Menu) l loi thc n gn vi mt iu khin c th no , chng
hn nh mt nt bm hay mt hp son tho,... Khi ngi dng nhn chut phi vo iu khin c gn
thc n ng cnh th thc n ng cnh ca iu khin s hin ra v cho php ngi dng chn cng
vic mong mun t thc n. Hnh 5.1 minh ha thc n ng cnh gn vi nt bm.
Thanh trng thi lthanh nm ngang di y ca s v hin th cc thng tin v trng thi hot
ng ca ng dng.Mt thanh trng thi c th c nhiu mc trng thi (StatusBar Item) khc nhau, mi
mc th hin mt loi thng tin no ti ngi dng.
Nt bm trng thi
bnh thng, chanhn chut hi
Thc n ng cnh xut hin khinhn chut phi ln nt bm
Hnh 5.1. Nt bm vi thc n ng cnh (Context Menu)
7/31/2019 _WPF-Lesson 5 - Context Menu - StatusBar
2/17
Microsoft VietnamDPE Team | WPFBi 5: Thc n ngcnh (Context Menu) vthanh trng thi (Status Bar)
2
Bi ny gii thiucc s dng thc n ng cnh v thanh trng thi bng ngn ng XAML.
1. Xy dng thc n ng cnh
Tng t nh thc n (Menu) thng thng cp bi trc, thc n ng cnh (Context
Menu) gm nhiu phn tthc nc t chc di dng phn cp. Miphn t thc n c th l
Command Menu Item (c gn trc tip vi cc b qun l s kin - Event handler) hay Popup
Menu Item (cha cc phn t thc n cp di). Tuy nhin, thc n ng cnh khng nm trn nh
ca s, n gn vi mt iu khin no v xut hin khi ngi dng nhn chut phi ln iu khin
tng ng.
Hai on code di dy minh ha dng thc n ng cnh minh ha hnh 5.1 bng m lnh
XAML v bng ngn ng C# tin so snh.
on m trnh xy dng thc n ng cnh bng XAML:
Nt bm vi thc n ng cnh
Mc trngthi 1
Hnh 5.2. Thanh trng thi gm ba mc trng thi khc nhau
Mc trngthi 2
Mc trngthi 3
7/31/2019 _WPF-Lesson 5 - Context Menu - StatusBar
3/17
Microsoft VietnamDPE Team | WPFBi 5: Thc n ngcnh (Context Menu) vthanh trng thi (Status Bar)
3
on m trnh xy dng thc n ng cnh bng C#:
//To nt bm
btn = newButton();
btn.Content = "Nt bm vi thc n ng cnh";
//To thc n ng cnh
contextmenu = newContextMenu();
//Gn thc n ng cnh cho nt bm
btn.ContextMenu = contextmenu;
//To cc phn t thc n cho thc n ng cnhmi = newMenuItem();
mi.Header = "Thc n ng cnh";
mi1 = newMenuItem();
mi1.Header = "Menu 1";
mi.Items.Add(mi1);
mi2 = newMenuItem();
mi2.Header = "Menu 2";
mi.Items.Add(mi2);
mib3 = newMenuItem();
mib3.Header = "Menu 3";
mib.Items.Add(mib3);
mib31 = newMenuItem();
mib31.Header = "Menu 31";
mib3.Items.Add(mib31);
mib32 = newMenuItem();
mib32.Header = "Menu 32";
mib3.Items.Add(mib32);
//a cc phn t thc n vo thc n ng cnh
contextmenu.Items.Add(mi);
Thc n ng cnh c th l loi thc nng cnhring bit, gn vi mt iu c th,hoc c
th l loi thc nng cnhchia s cho nhiu iu khin dng chung (Shared ContexMenu).
1.1 Xy dng thc n ng cnh ring bit
Thc n ng cnh ring bit l thc n ng cnh gn vi mt iu khin c th, cc trng thi
ca menu ny ch dnh ring cho iu khin cha n s dng. M lnh to thc n ng cnh loi ny
7/31/2019 _WPF-Lesson 5 - Context Menu - StatusBar
4/17
Microsoft VietnamDPE Team | WPFBi 5: Thc n ngcnh (Context Menu) vthanh trng thi (Status Bar)
4
t trc tip bn trong cp th ca iu khin cha n (nh minh ha on m XAML trn). Xem v
d minh ha hnh 5.3, minh ha hai nt bm, mi nt c mt thc n ng cnh ring. Khi chn Menu
m ca nt no th ni dung ca nt hin th dng ch m v ng thi Menu tng ng cng
trng thi Checkedv ngc li. Trng thi Checked ca mc m ca menu ng cnh thuc nt bm
1 khng nh hng ti thc n ca nt bm 2.
M lnh XAMLca v d trn nh sau.
on m trnh Menu to thc n ng cnh bng XAML:
Nt bm 1
Menu m caNt bm 1 ang trng thi Checked
Hnh 5.3. V d v thc n ng cnh ring bit ca tng iu khin khc nhau
Menu m caNt bm 2 ang trng thi UnChecked
7/31/2019 _WPF-Lesson 5 - Context Menu - StatusBar
5/17
Microsoft VietnamDPE Team | WPFBi 5: Thc n ngcnh (Context Menu) vthanh trng thi (Status Bar)
5
Nt bm 2
Trong on m trn, ta c hai nt bm vi nhn l Nt bm 1 v Nt bm 2, mi nt bm c
mt thc n ng cnh ring.
Thc n ng cnh ca nt bm c bt u bng v kt thc bng
. Trong cp th ny l cp th v .
Trong cp th v cha cc th nh ngha cc mc
ca thc n.
Cc mc thc n ca thc n ng cnh hot ng tng t nhth n thng thng c
cp bi trc.
Di y l on m trnh C# khai bo cc hm x l x kin khi nhn vo cc mc thc
n trn.
namespace ContextMenuApp1
{
///
7/31/2019 _WPF-Lesson 5 - Context Menu - StatusBar
6/17
Microsoft VietnamDPE Team | WPFBi 5: Thc n ngcnh (Context Menu) vthanh trng thi (Status Bar)
6
/// Interaction logic for Window1.xaml
///
publicpartialclassWindow1 : Window
{
public Window1(){
InitializeComponent();
}
privatevoid Bold_Checked1(object sender, RoutedEventArgs e)
{
cmButton1.FontWeight = FontWeights.Bold;
}
privatevoid Bold_Unchecked1(object sender, RoutedEventArgs e)
{
cmButton1.FontWeight = FontWeights.Normal;
}
privatevoid Message1(object sender, RoutedEventArgs e)
{
MessageBox.Show("Bn chn thc n nt bm 1");
}
privatevoid Bold_Checked2(object sender, RoutedEventArgs e)
{
cmButton2.FontWeight = FontWeights.Bold;
}
privatevoid Bold_Unchecked2(object sender, RoutedEventArgs e)
{
cmButton2.FontWeight = FontWeights.Normal;
}
privatevoid Message2(object sender, RoutedEventArgs e)
{
MessageBox.Show("Bn chn thc n nt bm 2");
}
}
}
7/31/2019 _WPF-Lesson 5 - Context Menu - StatusBar
7/17
Microsoft VietnamDPE Team | WPFBi 5: Thc n ngcnh (Context Menu) vthanh trng thi (Status Bar)
7
1.2 Thc n ng cnh chia s (Shared Context Menu)
Thc n ng cnh chia s l loi thc n ng cnh c th gn vi nhiu iu khin khc nhau .
Khi mt mc trn thc n ng cnh ca mt iu khin c Checked th tt c cc iu khin khc
cng chia s trng thi ny.
V d sau y minh ha bn iu khin gm hai Button v hai CheckBox cng chia s chung mt
thc n ng cnh, khi Check vo mc u tin ca thc n ng cnh trn mt Button hay mt
CheckBox th mc tng ng ca cc thc n ng cnh trn cc Button hay CheckBox khc cng c
trng thi Check tng ng.
on m sau minh ha m lnh XAML ca v d ny.
Hnh 5.4. V d v thc n ng cnh chia s
7/31/2019 _WPF-Lesson 5 - Context Menu - StatusBar
8/17
Microsoft VietnamDPE Team | WPFBi 5: Thc n ngcnh (Context Menu) vthanh trng thi (Status Bar)
8
Shared ContextMenu
C bn iu khin chia s thc n ng cnh.x:Shared c gn gi tr True, cho php cc
iu khin chia s ContextMenu. Bn c th th bng cch
check vo mc thc n u tin ca mt iu khin
sau m thc n ng cnh cc iu khin khc xem
trng thi ca mc u tin ca mi thc n ng cnh.
Khc vi thc n ng cnh thng thng, v tr cu ln to thc n ng cnh c khng nm
gia cp th ca cc iu khin cha n m c khai bo di dng ti nguyn chung ca Window.
Thuc tnh x:Keydng khai bo tn ca ContextMenu,s c dng gn cho cc iu
khin mun s dng ContextMenu ny. Cc iu khin s gn ContextMenu nh thuc tnh
ContextMenu="{DynamicResource ContextMenuChiase}".
7/31/2019 _WPF-Lesson 5 - Context Menu - StatusBar
9/17
Microsoft VietnamDPE Team | WPFBi 5: Thc n ngcnh (Context Menu) vthanh trng thi (Status Bar)
9
Ch , phi t gi tr cho x:Shared="True" th ContextMenu ny mi c th c chia s
cho cc iu khin. Nu t l x:Shared="False"th cc iu khin vn s dng c MenuContext
ny, nhng mi iu khin c mt th hin ring ca ContextMenu (khng chia s chung).
2. Xy dng v s dng thanh trng thi (StatusBar)
Thanh cng trng thi l thanh nm ngang, bn di y ca s, gm nhiu phn t nhm th
hin thng tin v cc trng thi hot ng ca ng dng . Mi phn t c th l mt vn bn, mt biu
tng hay mt thanh tin trnh(Minh ha hnh 5.5).
Phn t dng vn bn
Hnh 5.5 .Thanh trng thi
Thanh
trng thi
Phnt dng thanh tin trnh Phn t dng nh
7/31/2019 _WPF-Lesson 5 - Context Menu - StatusBar
10/17
Microsoft VietnamDPE Team | WPFBi 5: Thc n ngcnh (Context Menu) vthanh trng thi (Status Bar)
10
2.1. Thanh trng thi vi cc phn tvn bn
bt u tm hiu tng bc xy dng thanh trng thi, ta tm hiu m lnh XAML to thanh
trng thi n gin vi cc phn t dng vn bn.
Thanh trng thi n gin, ch gm mt phn t dng vn bn.
Thanh trng thi uc xy dngbng on m XAML sau:
< StatusBar Grid.Row="1">
Ready
Thanh trng thi gm nhiu hn mt phn t. V d, thanh trng thi gm hai mc Ready v Set
< StatusBar Grid.Row="1">
Ready
Set
v d trn phn tth hai nm ngay bn cnh phn t th nht, nu mun phn t th nht c
rng ln hn v phn t th hai c cn bn phi ca s cho thun tin (nh hnh di) ta phi s dng
k thut to layout (b cc) trong thanh trng thi phn chi thanh trng thi thnh cc vng mong
mun v t cc phn t cn thit vo cc vng tng ng
7/31/2019 _WPF-Lesson 5 - Context Menu - StatusBar
11/17
Microsoft VietnamDPE Team | WPFBi 5: Thc n ngcnh (Context Menu) vthanh trng thi (Status Bar)
11
Ready
Set
on m XAML trn ta s dng th v
nh ngha b cc ca cc phn t trong thanh trng thi. Trong l cp
th v . K tip, s dng th nh
ngha cc vng hin th kiu li. Trong v d ny, li bao gm mt dng v hai ct. Ct th nht c
di t co d chim ton b khng gian trng nh thuc tnh Width="*". Ct th hai c di
bng di ni dung m n cha nh thuc tnh Width="Auto".
Phn t th nht c gn vi ct th u tin ca li (Grid.Column="0").
Ready
Ct th hai c gn vi ct th hai ca li (Grid.Column="1").
Set
7/31/2019 _WPF-Lesson 5 - Context Menu - StatusBar
12/17
Microsoft VietnamDPE Team | WPFBi 5: Thc n ngcnh (Context Menu) vthanh trng thi (Status Bar)
12
2.2. Thanh trng thi vi phn t l thanh tin trnh
(Progress Bar)
i khi, trn thanh trng thi ta mun th hin trng thi thc hin ca mt cng vic no , ta
c th a thanh tin trnh vo mt phn t trn thanh trng thi (minh ha hnh 5.6).
M lnh minh ha thanh trng thi trn nh sau:
Ready
Hnh 5.6. Thanh trng thi vi phn t l thanh tin trnh
Thanh tin trnh
7/31/2019 _WPF-Lesson 5 - Context Menu - StatusBar
13/17
Microsoft VietnamDPE Team | WPFBi 5: Thc n ngcnh (Context Menu) vthanh trng thi (Status Bar)
13
Set
v d trn, ta t thanh trng thi vo mc th hai ca thanh trng thi.
2.3. Thanh trng thi vi phn t l hnh nh
Hnh 57. Minh ha phn t thanh trng thi l hnh nh biu tng.
M lnh minh ha thanh trng thi trn nh sau:
Hnh 5.7. Thanh trng thivi phn t l hnh nh
Phn t ca thanhtrng thi l hnh nh
7/31/2019 _WPF-Lesson 5 - Context Menu - StatusBar
14/17
Microsoft VietnamDPE Team | WPFBi 5: Thc n ngcnh (Context Menu) vthanh trng thi (Status Bar)
14
Ready
Set
v d trn, ta t thanh trng thi vo mc th tca thanh trng thi.
2.4. M lnh tng hp ca thanh trng thi
V d minh ha t cc phn t trn thanh trng thi.
Mi phn t c th l vn bn, nh hay thanh tin trnh.
7/31/2019 _WPF-Lesson 5 - Context Menu - StatusBar
15/17
Microsoft VietnamDPE Team | WPFBi 5: Thc n ngcnh (Context Menu) vthanh trng thi (Status Bar)
15
Ready
Set
3. Cu hi n tp
1. Context Menu xut hin khi nhn chut no ln iu khin?A. Chut tri
7/31/2019 _WPF-Lesson 5 - Context Menu - StatusBar
16/17
Microsoft VietnamDPE Team | WPFBi 5: Thc n ngcnh (Context Menu) vthanh trng thi (Status Bar)
16
B. Chut phi
Cu tr li:B
2. Context Menu c th cha c Command Menu Item v Popup Menu Item?A. ng
B. Sai
Cu tr li:A
3. Cu lnh XAML nh ngha thc n ng cnh phinm trong cp th nhngha iu khin cha thc n?
A. ng
B. Sai
Cu tr li:B
4. Thc n ng cnh c th chia s cho nhiu iu khin dng chung?A. ng
B. Sai
Cu tr li:A
5. Thanh trng thi ch c php cha mt phn t trng thi:A. ng
B. Sai
Cu tr li:B
6. Thanh trng thi c th cha nhng cc phn t thuc loi no?A. Vn bn.
B. Hnh nh.
C. Cc iu khin khc nh Button, ProgressBar,..
D. C ba loi trn.
Cu tr li:D
4. Ti liu tham kho
1. Windows Presentation Foundation, URL: http://msdn.microsoft.com/en-
us/library/ms754130.aspx.
http://msdn.microsoft.com/en-us/library/ms754130.aspxhttp://msdn.microsoft.com/en-us/library/ms754130.aspxhttp://msdn.microsoft.com/en-us/library/ms754130.aspxhttp://msdn.microsoft.com/en-us/library/ms754130.aspx7/31/2019 _WPF-Lesson 5 - Context Menu - StatusBar
17/17
Microsoft Vietnam DPE Team | WPF Bi 5: Thc n ng cnh (Context Menu) v 17
2. MSDNContext Menu, URL: http://msdn.microsoft.com/en-us/library/ms743670.aspx.
3. MSDNContext Menu sample, URL: http://msdn.microsoft.com/en-
us/library/ms771470(VS.85).aspx.
4. MSDNStatusBar, URL: http://msdn.microsoft.com/en-us/library/ms752075.aspx.
5. MSDNStatusBar sample, URL: http://msdn.microsoft.com/en-
us/library/ms771396.aspx.
6. The Perfect WPF StatusBar, URL:http://kentb.blogspot.com/2007/10/perfect-wpf-
statusbar.html.
http://msdn.microsoft.com/en-us/library/ms743670.aspxhttp://msdn.microsoft.com/en-us/library/ms743670.aspxhttp://msdn.microsoft.com/en-us/library/ms771470(VS.85).aspxhttp://msdn.microsoft.com/en-us/library/ms771470(VS.85).aspxhttp://msdn.microsoft.com/en-us/library/ms771470(VS.85).aspxhttp://msdn.microsoft.com/en-us/library/ms752075.aspxhttp://msdn.microsoft.com/en-us/library/ms752075.aspxhttp://msdn.microsoft.com/en-us/library/ms771396.aspxhttp://msdn.microsoft.com/en-us/library/ms771396.aspxhttp://msdn.microsoft.com/en-us/library/ms771396.aspxhttp://kentb.blogspot.com/2007/10/perfect-wpf-statusbar.htmlhttp://kentb.blogspot.com/2007/10/perfect-wpf-statusbar.htmlhttp://kentb.blogspot.com/2007/10/perfect-wpf-statusbar.htmlhttp://kentb.blogspot.com/2007/10/perfect-wpf-statusbar.htmlhttp://kentb.blogspot.com/2007/10/perfect-wpf-statusbar.htmlhttp://kentb.blogspot.com/2007/10/perfect-wpf-statusbar.htmlhttp://msdn.microsoft.com/en-us/library/ms771396.aspxhttp://msdn.microsoft.com/en-us/library/ms771396.aspxhttp://msdn.microsoft.com/en-us/library/ms752075.aspxhttp://msdn.microsoft.com/en-us/library/ms771470(VS.85).aspxhttp://msdn.microsoft.com/en-us/library/ms771470(VS.85).aspxhttp://msdn.microsoft.com/en-us/library/ms743670.aspx