WP7 Application Bar

Posted 13/08/2010 17:58 by pandula

ช่วงนี้บทความที่ผมเขียนไม่ค่อยจะถี่มากนัก จะพยายามลงให้ต่อเนื่องมากยืิ่งขึ้นครับ โดยวันนี้จะมาสาธิตการทำ Application Bar บน Windows phone 7 ให้ชมกัน

image

Application Bar คือส่วนของแถบเมนูที่มีใน WP7 เราจะพัฒนาหรือใส่ลูกเล่นเข้าไปให้กับ Application Bar ของเราก็ได้ ไม่ว่าจะซ่อน, เปลี่ยนสี, ใส่ปุ่ม และอื่นๆ งั้นเรามาเริ่มสร้างไว้ใช้งานกันเองเลยดีกว่าครับ

เตรียมตัวให้พร้อม

Tools ที่ใช้ในวันนี้ก็ยังคงเป็น Microsoft Visual Studio 2010 Express เจ้าเก่าของเรานั่นเอง

เริ่มกันเลย

สร้างโปรเจค Windows Phone Application ขึ้นมา

001

ทำการ Add Reference ที่ชื่อว่า Microsoft.Phone.Shell เข้าไป เพราะ Application bar จะใช้ Reference ตัวนี้

002 

จากนั้น ไปที่ App.xaml ทำการเพิ่ม name space ของ Microsft.phone.shell เข้าไป

image

ตอนนี้เราจะ appbar ที่มีคุณสมบัติเป็น ApplicationBar มาให้เราเรียกใช้แล้ว ต่อไปก็ทำการสร้าง ApplicationBar ขึ้นมาใน Resource ของเรา

image

ตัวอย่างนี้ ผมได้สร้าง menu ขึ้นมา 4 ตัว ใน ApplicationBar โดยกำหนดไว้ว่าให้ visible เป็น true เพื่อให้เราเห็นหน้าตาของมันเมื่อ Run โปรแกรม โดยโครงสร้างภาษา Tag แบบ Xaml น่าจะช่วยให้ตีความกันได้ไม่ยากนะครับ โดยผมตั้งชื่อ Application Bar ตัวนี้ว่า MainAppBar เพื่อที่เราจะนำไปใช้งานกันที่หน้า MainPage.xaml แบบนี้

image 

ในขั้นตอนนี้ผมได้ทำการเพิ่ม ApplicationBar เข้าไปในหน้า MainPage.xaml โดยอ้างอิงถึง StaticResource ที่ได้สร้างไว้ในขั้นตอนที่แล้ว ที่ชื่อ MainAppBar

ถ้าผู้อ่าน ทำการ Run โปรแกรมดูในตอนนี้ ก็จะพบหน้าตาแบบนี้แล้วครับ

             image image

 

ยังไม่จบ !

ถ้าหาก Application Bar ที่เราสร้างขึ้น มันจะมาโชว์นิ่งๆ แบบนี้มันก็คงจะไม่ได้อะไรขึ้นมาครับ ต่อไปจะแสดงวิธีใช้งาน ApplicationBar ที่สร้างขึ้นนี้ แบบ simple simple… ที่ทุกคนคงจะใช้ได้กันครับ คือการทำ Navigate ด้วย AppBar ที่เราสร้างขึ้น

โดยตอนนี้ผมต้องการจะให้เกิดเหตุการดังนี้ครับ

1. เมื่อกดปุ้ม about โปรแกรมจะเรียกหน้า About.xaml ขึ้นมา
2. เมื่อกดปุ่ม contact จะเรียกหน้า Contact.xaml ขึ้นมา
3. เมื่อกดปุ่ม photo จะเรียกหน้า Photo.xaml ขึ้นมา
4. เมื่อกดปุ่ม help จะเรียกหน้า Help.xaml ขึ้นมา

โดยเราก็ต้องไป Add new Item ของแต่ละหน้าขึ้นมานะครับ และถ้าอยากให้ทุกหน้ามี ApplcationBar เหมือนกัน ก็อย่าลืมเพิ่ม namespace เข้าไปในทุกหน้าด้วย

ต่อไปเราจะทำต่อจาก Resource ที่เราได้ทำไว้แล้วใน App.xaml ดังนี้ครับ

image

ผมทำการเพิ่ม event Click เข้าไปใน MenuItem แต่ละตัว จากนั้นก็ new Event Handler ขึ้นมาให้ครบครับ (ทำง่ายๆ ด้วยการคลิกขวาที่ ชื่อแล้วเลือก Navigate to Event Handler)

image 

ที่ไฟล์ App.xaml.cs เราจะได้ Method ขึ้นมา เราก็จะทำการสร้าง Navigate ให้กับปุ่มดังนี้ครับ

image

ตรงจุดนี้ในส่วนของ PhoneApplicationFram ที่เราจะใช้นั้น ต้องทำการ using Microsoft.Phone.Controls; มาก่อนครับ (พิมตามนี้แล้ว คลิกขวา Resolve เอาเลยครับ)

จากนั้นผมก็จะทำแบบนี้กับทุกๆ Event ที่ผมสร้างให้ปุ่มทั้ง 4 ครับ

image

เรียบร้อยแล้วครับ จากนั้นมา Run ดูผลลัพธ์กันเลยดีกว่าครับ

http://www.facebook.com/#!/video/video.php?v=1448765459640

ง่ายใช่ไหมล่ะครับ ถ้ายังไงมีไอเดียเจ๋งๆ อย่าลืมใส่เข้าไป แล้วเอาผลงานมาโชว์กันนะครับ แล้วเจอกันใหม่ครั้งหน้าครับ

Wp7 Applicaiotn Bar Example. by pandula

About pandula

iPandula.net iPandula : Dev, is mind.

ร่วมให้กำลังใจนักเขียน

อ่านแล้วชอบใจ อยากให้กำลังใจกับผู้แต่งบทความนี้ ขอเชิญร่วมให้กำลังใจผ่าน Paysbuy/Paypal นะครับ ปลอดภัยเพราะทำงานผ่าน SSL และไม่มีค่าใช้จ่ายเพิ่มเติมครับ เว็บเราให้นักเขียน 100% ครับ

Comment ระบบเก่า

 

Aef_ said:

น่าจะสอนทำ ApplicationIconBar ด้วยเลย ^^

August 14, 2010 6:09 AM
 

pandula said:

สำหรับ ApplicationBarIconButton วิธีใช้คล้ายกันครับใน tag เราจะใช้

<shell:ApplicationBarIconButton x:Name="btnName" IconUri="/Images/...">

ส่วนอันนี้คือ icon ของ wp7 ที่ microsoft มีให้ใช้ครับ

www.microsoft.com/.../details.aspx

August 14, 2010 7:09 PM
 

Aef_ said:

ของผมพอเลือก add ref ไม่มี Microsoft.Phone.Shell อะครับ

August 15, 2010 2:21 AM
 

Aef_ said:

ApplicationBarIconButton มันไม่แสดงรูปอะครับ เป็นกากบาท

ตรง

   <!-- Sample code showing usage of ApplicationBar

   <phone:PhoneApplicationPage.ApplicationBar>

       <shell:ApplicationBar IsVisible="True" IsMenuEnabled="True">

           <shell:ApplicationBarIconButton x:Name="appbar_button1" IconUri="/Images/appbar_button1.png" Text="Button 1"></shell:ApplicationBarIconButton>

           <shell:ApplicationBarIconButton x:Name="appbar_button2" IconUri="/Images/appbar_button2.png" Text="Button 2"></shell:ApplicationBarIconButton>

           <shell:ApplicationBar.MenuItems>

               <shell:ApplicationBarMenuItem x:Name="menuItem1" Text="MenuItem 1"></shell:ApplicationBarMenuItem>

               <shell:ApplicationBarMenuItem x:Name="menuItem2" Text="MenuItem 2"></shell:ApplicationBarMenuItem>

           </shell:ApplicationBar.MenuItems>

       </shell:ApplicationBar>

   </phone:PhoneApplicationPage.ApplicationBar>

   -->

เอาไว้ทำอารัยหรอครับ

August 15, 2010 2:44 AM
 

varavut said:

ของคุณ Aef_ เป็น Emulator ตัวล่าสุดครับไม่ต้อง add reference ครับ เอา comment นั้นออกได้เลยครับแล้วก็แก้ตามต้องการเลย

การลบ comment คือเอา 2 บรรทัดนี้ออกครับ

<!-- Sample code showing usage of ApplicationBar

กับ

-->

August 15, 2010 11:11 AM
 

varavut said:

อยากรบกวนพี่ pandula สอนวิธีทำ page transition หน่อยครับ อยากให้มี animation ตอนเปลี่ยน page อ่ะครับ ขอบคุณมากครับ

August 15, 2010 11:14 AM
 

Aef_ said:

@varavut ผมลองลบ ออกแล้ว มันก้อไม่มีอารัยเกิดขึ้นอะครับ เลย comment ไว้เหมือนเดิม

ลองแบบเขียนโค้ตเอา มันขึ้นแต่ว่า ตรงรูป icon ไม่ขึ้น มันขึ้นเป็นรูป กากบาทแทน สงสัยหารูปไม่เจอ ก้อเอาไฟล์ไว้ /Images แล้วนะครับ

งงมั๊ก

August 15, 2010 7:26 PM
 

pandula said:

@Aef_ คิดว่าคงเป็นที่ build action ครับ

ที่ properties ของรูป เลือก build action เป็น Content ครับ

August 17, 2010 5:47 PM
 

frontpage said:

จากที่ผมเขียนไว้ครั้งก่อนเรื่องของ Application bar จะเห็นได้ว่าโปรแกรมของเรา มีการเรียก page ต่างๆ ข

August 18, 2010 12:02 AM
 

i Pandula said:

WP7 Page Transition 1st Step

August 18, 2010 12:04 AM
 

nstk said:

ไม่มี references Microsoft.Phone.Shell อ่ะค่ะ  ทำไงดี  ตอนนี้ใช้ Beta ที่โหลดมาจากเว็ป Microsoft

August 30, 2010 2:55 PM
 

wp7 said:

Aef_ said:

<shell:ApplicationBarIconButton x:Name="Add" Text=" Add" IconUri="/Images/appbar.add.rest.png" Click="Add_Click" />

ถ้าอยากให้รูปขึ้น ก็คลิกขวาที่รูป icon ของเรานะครับแล้วเลือก

พอพเพอร์ตี้  ในช่อง Build Action  : จะเป็นค่า Resoure

ให้เปลี่ยนจาก Resoure เป็น content แทนนะครับ

June 30, 2011 7:56 PM
(required)  
(optional)
(required)  
Add

DisQUS Comment (ยังเอ๋อๆ อยู่)

blog comments powered by Disqus