_wpf-lesson 5 - context menu - statusbar

Upload: vo-quoc-duong

Post on 05-Apr-2018

226 views

Category:

Documents


0 download

TRANSCRIPT

  • 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.aspx
  • 7/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