Nó là một phiên bản ñơn nhiệm của Visual Studio ñặc biệt dành cho phát triển ñiện thoại , do ñó bạn sẽ không nhận ñược các công cụ ñể tạo ra các ứng dụng Windows 8 Store, Windows Present
Trang 1NGUYỄN VĂN THẠNH
LẬP TRÌNH WINDOWS
PHONE 8 ( Các hướng dẫn cơ bản )
2014
Trang 3I-Mở đầu
ðây là tài liệu hướng dẫn thực hành cơ bản cho người mới bắt ñầu làm quen với lập trình Windows Phone 8 trên Visual Studio 12 cài ñặt cho máy tính có hệ ñiều hành Windows 8 Vì vậy trong tài liệu này có nhiều ñiều ñược giải thích cặn
kẻ bằng hình ảnh ñể minh họa cho các thao tác trên máy tính Có thể bỏ qua các giải thích ñó nếu bạn ñã quen thuộc với Windows 8 và VS 2012.Ngoài ra ñể theo dõi tài liệu bạn cũng cần phải có một ít hiểu biết về ngôn ngữ lập trình C#, khái niệm về ngôn ngữ kịch bản
Trong tài liệu chúng tôi dùng windows phone Emulator ( trình giả lập ñiện thoại với hệ ñiều hành Windows Phone ) ñể chạy các ứng dụng và dùng VS 2012
ñể viết code
Tài liệu ñược dịch từ các tài liệu dạng ebook trên Internet, các bài viết có liên quan trên MSDN (http://msdn.microsoft.com/en-us/library/windowsphone /develop/), Nokia Dev (http://developer.nokia.com/ )và trên các diễn ñàn về
Windows Phone Xin chân thành cảm ơn các tác giả
Trang 4II-Cài đặt Windows Phone SDK 8.0
Windows Phone là hệ ñiều hành của Microsoft dành cho smartphone, nó kế tục nền tảng Windows Mobile mặc dù chúng không tương thích với nhau Khác với Windows Mobile, Windows Phone tập trung vào sự phát triển của Market place - nơi các nhà phát triển có thể cung cấp sản phẩm (miễn phí hoặc có phí) tới người dùng Windows Phone ñược bán vào tháng 10 năm 2010 và ñầu năm
2011 tại Châu Á
Ngày 20 tháng 6 năm 2012, Microsoft giới thiệu Windows Phone 8, một thế
hệ hệ ñiều hành mới, và 4 tháng sau, 29 tháng 10 năm 2012, Microsoft bắt ñầu bán phiên bản này Windows Phone 8 thay thế lõi kiến trúc Windows CE trên Windows Phone 7 thành kernel của Windows NT vốn ñược thiết kế cho Windows
8, ñiều này ñã làm cho ứng dụng dễ dàng ñược kết nối giữa hai hệ ñiều hành Ngoài ra, Windows Phone 8 còn hỗ trợ CPU ña nhân, nhiều ñộ phân giải, tùy biến Start Screen, phiên bản di ñộng của Internet Explorer 10, Nokia Maps thay thế Bing Maps.Theo Microsoft, Windows Phone 8 sẽ ñược hỗ trợ ñến ngày 8 tháng 7 năm 2014
Phiên bản mới nhất hiện tại là Windows Phone 8 nhưng bản 8.1 cũng ñược
Trang 5Trước khi phát triển một ứng dụng ñiện thoại Windows 8 , cần phải cài ñặt Windows Phone 8 SDK (Software Development Kit) trên một máy tính chạy Windows 8 bản 64-bit Lý do là vì chúng hổ trợ chạy Windows Phone Emulator , trình giả lập Windows Phone, nó hoạt ñộng như một máy ảo trong Hyper-V, nền tảng ảo hóa của Microsoft Vì vậy, khi sau khi cài ñặt trên máy tính ,ta sẽ có hệ ñiều hành Windows Phone 8 chạy trên một ñiện thoại ảo trông giống như một ñiện thoại thực sự và ta có thể dùng Emulator thử nghiệm công việc của mình
1 Tìm hiểu các yêu cầu về hệ ñiều hành
Việc trước tiên là kiểm tra phiên bản hệ ñiều hành trên máy tính.Ta vào Control Panel, System and Security , trong hộp thoại System sẽ thấy phiên bản HðH của máy tính :
ðể tiết kiệm thời gian và chi phí,nếu bạn ñang chạy Windows phiên bản trước 32-bit, bạn có thể sử dụng Windows Upgrade Advisor bằng cách truy cập:
Trang 6http://windows.microsoft.com/en-us/windows/buy ñể nâng cấp lên Windows 8 hay 8.1 bản 64-bit
Với mục ñích phát triển ứng dụng Windows Phone, bạn không cần phải lựa chọn phiên bản Pro, chỉ cần ñảm bảo bất cứ ñiều gì bạn chọn ñều là 64-bit
Tiếp theo, bạn tải về và cài ñặt Windows Phone SDK 8 Nếu bạn ñã có Visual Studio 2012 Professional hoặc cao hơn, trình cài ñặt sẽ chỉ thêm các công
cụ cần thiết cho phát triển ñiện thoại giả lập Nếu bạn không có Visual Studio
2012, trình cài ñặt sẽ thêm Visual Studio 2012 Express for Windows Phone 8 Nó
là một phiên bản ñơn nhiệm của Visual Studio ñặc biệt dành cho phát triển ñiện thoại , do ñó bạn sẽ không nhận ñược các công cụ ñể tạo ra các ứng dụng Windows 8 Store, Windows Presentation Foundation, ASP.NET, vv Tôi sử dụng phiên bản này cho phần còn lại của loạt bài này, tuy vậy cách làm là gần giống như cách sử dụng Visual Studio 2012 Professional hoặc cao hơn
Link tải Windows Phone SDK
http://developer.windowsphone.com/en-us/downloadsdk
2 Kích hoạt Hyper-V
Trong khi cài ñặt, bạn có thể thấy thông báo này:
Trang 7Trong trường hợp này, bạn sẽ cần phải kích hoạt bo mạch chủ của bạn ñể chạy Hyper-V
Sau ñây là hướng dẫn kích hoạt Hyper-V của microsoft :
ðể kích hoạt Hyper-V, bạn phải làm những ñiều sau ñây:
- Enable các thiết lập BIOS Hyper-V yêu cầu
- Enable Hyper-V trong Windows
ðể kích hoạt các thiết lập BIOS Hyper-V yêu cầu:
Trang 8Khởi ñộng lại máy tính và bấm phím cài ñặt BIOS Bạn có thể xem và thay ñổi các thiết lập BIOS của máy tính bằng cách nhấn một phím qui ñịnh trong quá trình khởi ñộng máy tính Phím vào BIOS khác nhau tùy thuộc vào nhà sản xuất motherboard Nó thường là một phím ñặc biệt như < Del > hoặc một phím chức năng như < F2 > hoặc < F10 >
Enable các mục sau ñây nếu chúng có sẵn:
Feature
Setting AMD
Setting Intel
SLAT (Second Level Address Translation)
NP (Nested Page Tables)
RVI (Rapid Virtualization Indexing)
EPT (Extended Page Tables)
Ảo hóa hỗ trợ phần cứng Hardware-assisted virtualization
SVM (hỗ trợ bộ xử lý AMD cho Ảo hóa hỗ trợ phần cứng )
Trang 9Data Execution Prevention (DEP)
Lưu cài ñặt và khởi ñộng lại máy tính một lần nữa
ðể kích hoạt Hyper-V trong Windows:
1 Trong Control Panel, bấm Programs, và sau ñó nhấp vào Turn Windows features on or off
2 Trong hộp thoại Windows Features, click Hyper-V Danh sách các tùy chọn sẽ mở rộng
3 Trong danh sách mở rộng các tùy chọn, kích chọn ít nhất là Hyper-V Management tools, Platform, và sau ñó nhấn OK
Trang 10.Trong trường hợp của tôi, tôi d
mới nhất của Intel i7 chip i7
nghệ Hyper-Threading của Intel
a tôi, tôi dùng bo mạch chủ Asus Sabertooth Z77
a Intel i7 chip i7-3770K phù hợp socket LGA1155 N
a Intel Tôi chỉ phải bật ON các chức năng sau :
Asus Sabertooth Z77 , bản
Nó hỗ trợ công
c năng sau :
Trang 11Tôi vào Advanced Settings r
threading chọn Enable
3-Chạy emulator lần ñầu :
Thực tế là khi chạy Emulator l
chưa Nếu Hyper-V chưa bậ
Click Turn on Hyper-V ñ
Panel, sau ñó enable Hyper-V trong Windows
Nếu Hyper-V ñã bật nhưng b
Administrators group trên máy thì s
quyền Administrator thì thôi)
Click Retry ñể cho phép quy
Administrators group Nếu b
Tôi vào Advanced Settings rồi chọn tab Advanced và ở
u :
y Emulator lần ñầu , Emulator sẽ kiểm tra Hyper
ật thì hộp thoại sau sẽ xuất hiện :
V ñể mở hộp thoại Windows Features từ
V trong Windows
t nhưng bạn chưa phải là thành viên của local Hypertrên máy thì sẽ có hộp thoại sau xuất hiện ( n
n Administrator thì thôi)
cho phép quyền truy cập và bạn ñược phép gia nhập
u bạn ñang triển khai ứng dụng thì bạn s
Trang 12thông báo lỗi triển khai thất bại Click OK sau ñó biên dịch lại ứng dụng trên emulator
Theo tôi bạn nên cài thêm VS 2012 ñầy ñủ là tốt hơn vì VS cho phép bạn tạo ứng dụng cho nhiều loại.Hiện nay ñã có VS 2013 Ultimate, Premium, Professional Trong tài liệu này tôi dùng VS 2012
Nếu khi mở một dự án Windows Phone 8 mà không xuất hiện Designer , thay vào ñó là thông báo lỗi thì hãy cập nhật VS 2012 Quá trình cập nhật lâu hay mau tùy theo mạng sử dụng Sau khi cập nhật xong thì khởi ñộng lại VS là ñược, tốt nhất là nên khởi ñộng lại máy sau khi cập nhật
Ngoài ra sau khi cài ñặt VS bạn có thể cài thêm các Extension có ích cho mình Chúng tôi sẽ hướng dẫn cách cài ñặt sau này
Trang 13III: Viết ứng dụng windows phone 8 ñầu tiên
Bây giờ chúng ta ñã có các công cụ cần cài ñặt, và có thể xây dựng ứng dụng Windows Phone 8 ñầu tiên :
Dưới ñây là kế hoạch của chúng ta trong phần này :
1 Tạo ra một dự án Windows Phone App mới
2 Thực hiện một số chỉnh sửa ñơn giản, như loại bỏ các comment, thêm một
MediaControl ( ñiều khiển media ) , một nút ñiều khiển và ñặt tên cho nó
3 Viết một xử lý sự kiện(event handler) sẽ ñáp ứng với sự kiện bấm nút
4 Khi sự kiện nhấn vào nút xảy ra thì sẽ phát một tập tin âm thanh dạng wav
1 Tạo một dự án Windows Phone app mới tên là "PetSounds"
Hy vọng rằng một số bước cơ bản như tạo dự án mới, thêm tệp mới v.v ñã quen thuộc với bạn từ kinh nghiệm cá nhân.Chúng tôi không muốn mất nhiều thời gian ñể giải thích các vấn ñề ñó ðể tạo dự án mới ta làm như sau ( ta ñưa hình ảnh minh họa trước và hướng dẫn sau ) :
1 File
Trang 142 New
3 Project
Ở cửa sổ New project:
1/ Chọn Visual C# → Windows Phone
2/ Chọn Windows Phone App
3/ Ở mục Name ñổi tên thành PetSounds
4/ Lưu ý mục Solution name cũng tự ñộng ñổi thành PetSounds
5/ Nếu cần lưu file ở một thư mục khác thì ấn nút Browse…
6/ Nhấn nút OK
Chúng ta sẽ gặp bảng sau cho phép chọn hệ ñiều hành windows phone :
Trang 15Với VS 2012 thì mặc ñịnh là hệ ñiều hành Windows Phone OS 8.0 Tuy nhiên nếu muốn ứng dụng có thể chạy trên hệ ñiều hành phiên bản thấp hơn ta kích vào mũi tên ñể chọn các phiên bản hệ ñiều hành thấp Kích OK
2 Xóa các comment không cần thiết ñể dễ dàng ñiều hướng thông qua code
Sau một lúc, dự án mới sẽ ñược tạo ra và nạp vào vùng Solution Explorer, file MainPage.xaml sẽ ñược hiển thị trong khu vực chính của Visual Studio Lưu ý rằng ở Windows Phone các “màn hình" xuất hiện ñược gọi là "trang", ví dụ trang MainPage.xaml Trong ứng dụng ñầu tiên , chúng tôi sẽ chỉ làm việc với 1 "trang", nhưng trong các ứng dụng khác, chúng ta sẽ thêm các trang và di chuyển giữa chúng
Tôi giả sử bạn ñã chưa bao giờ làm việc với một dự án Windows Phone mẫu nào cả MainPage.xaml và visual designer như sau:
Trang 16Khu vực 1 là vùng visual designer : ñây là khu vực ta dùng ñể thiết kế trực quan màn hình nhờ vào thanh công cụ ( sẽ ñề cập sau )
Khu vực 2 là vùng code của file XAML ðây là khu vực ta viết file xaml bằng tay Khi thay ñổi code thì hình ảnh ở vùng 1 cũng thay ñổi theo và ngược lại nếu thay ñổi ở 1 thì code XAML cũng thay ñổi Chúng là 2 cách thể hiện, nhưng ñều chỉ chung một sự vật
Có một số các công cụ ở bên dưới và giữa 2 vùng
(bên dưới )
( giữa 2 vùng )
Trang 17
Chúng ta có thể kích vào các nút ñó ñể thấy sự thay ñổi
Ta quay lại với mục ñích ban ñầu là xóa các comment không cần thiết Ta sẽ xóa 2 vùng comment chỉ ra sau ñây:
Trang 18Bạn có thể xóa các comment từ vùng có ký hiệu ⇠ ñến ký hiệu ⇢( dòng 23 tới 41 và từ 53 tới 59 )File XAML còn lại như sau :
Trang 19Chúng ta sẽ tập trung vào "ContentPanel" ( khu vực thiết kế các phần tử cho màn hình ứng dụng )bắt ñầu từ dòng 36 trong suốt bài học này.Code mới cho
XAML ñược thêm vào giữa các phần tử mở <Grid> và ñóng </Grid>
3 Thêm một nút ñiều khiển vào ContentPanel và thiết kế dạng cho nó
Thêm mã sau ñây giữa các phần tử mở <Grid> và ñóng </Grid> ( dòng 39 )
Trang 20Sau khi bạn thêm vào code :
<Button>Quack </Button>
thì khu vực visual designer ( thiết kế trực quan) thay ñổi như sau:
Màn hình có một nút trên ñó có từ “Quack”
Nút chiếm thực tế toàn bộ diện tích của màn hình ðiều ñó không làm
chúng ta hài lòng.ðể giới hạn kích thước của nút ta thêm vào thuộc tính Height
(chiều cao) và width ( chiều rộng) cho nút như sau:
Giá trị 200 chỉ 200 pixels Visual Designer cập nhật với nút nhỏ hơn :
Trang 21Chúng ta hãy di chuyển nút ñiều khiển ñến góc trên bên trái của trang (bên dưới các Trang tiêu ñề), và làm cho màu nền của nó màu ñỏ Code của nó như sau :
Tôi cũng ñã cho < Button> một cái tên vì vậy mà tôi có thể tham khảo ñiều khiển này trong C# Việc ñặt tên cho ñiều khiển là tùy chọn Bạn chỉ ñặt tên cho những ñiều khiển này khi nào bạn muốn dùng nó bằng cách nào ñó trong C# Tôi biết tôi sẽ muốn truy cập vào nút sau này do ñó bây giờ tôi cung cấp cho nó một tên Visual designer cập nhật các thay ñổi như sau :
Trang 22Bạn có thể thấy rằng ta có thể ựiều khiển các tắnh chất của các ựối tượng trên trang Windows Phone bằng cách thiết lập các thuộc tắnh cho nó.
4 Thêm một ựiều khiển MediaElement
Tiếp theo, hãy thêm một ựiều khiển MediaElement vào XAML, bên dưới nút
Lưu ý ta có thể thêm cac khoảng trống vào các dòng trong code của XAML
mà không làm ảnh hưởng ựến bất cứ ựiều gì Như bạn sẽ tìm hiểu sau này , Visual Studio sẽ tự ựộng thụt lề và bỏ khoảng trống giữa các ựoạn code khi biên dịch
Ngoài ra, ta ựã không thiết lập các thuộc tắnh Source của MediaElement đó
là vì tôi không có bất kỳ nguồn nào (tức là các phần tử ựa phương tiện như tập tin
âm thanh) trong dự án của tôi ựể lựa chọn
5 Thêm một tập tin wav làm assets cho dự án
Có thể dùng một file wav nào bạn có hoặc bạn ựã tải xuống các assets ựi kèm với dự án này Giải nén tập tin ựó vào một thư mục có tên C9Phone8 trong
My Documents Thư mục C9Phone8 có 3 folder là 3 assets :
Trang 23Ta sẽ dùng assets tên là PetSounds_Assets Bên trong nó có 2 folder khác Copy folder Audio vào dự án
Các file âm thanh này sẽ ñược ñưa vào folder assets của dự án Folder assets của dự án ñược nhìn thấy trong solution explorer như sau :
Ta kéo thả folder Audio từ windows explorer vào và ñược như hình sau :
Trang 24Có nhiều file âm thanh wav trong ứng dụng , nhưng tôi muốn dùng một file cụ thể tập tinDuck.WAV Tôi sẽ thêm file ñó như là giá trị (value) của thuộc tính Source trong phần tử MediaElement trong XAML :
Source =” / Assets/Audio/Animals/Duck.wav”
Hoặc Source =” Assets/Audio/Animals/Duck.wav” tùy theo vị trí của file xaml Lưu ý rằng ñường dẫn là tương ñối so với file MainPage.xaml nằm trong thư mục gốc của dự án:
Nếu thích ta có thể ñặt file wav ở một nơi khác, vi dụ ngay trong solution , khi ñó
ta viết : Source =”Duck.wav”
:
Tôi cũng ñã thêm 2 thuộc tính nữa : AutoPlay và Volume
Volume có giá trị 1, nghĩa là mức to nhất Nhiều thiết lập trong windows Phone API có giá trị từ 0.0 ñến 1.0 với 0.5 là giá trị trung bình
Phần lớn các giá trị này thuộc kiểu Double trong C#
Trang 25Tiếp theo tôi muốn thông qua ựiều khiển này ựể ựiều khiển việc phát âm thanh mỗi khi ấn nút, vì vậy cần phải cho MediaControl một tên
AutoPlay có giá trị là False Nếu ựặt true , file Duck.wav sẽ chạy ngay sau khi ứng dụng tải lên.đó là ựiều tôi không muốn Tôi muốn thiết lập rằng mỗi khi tôi nhấn nút ỘQuackỢ thì file wav sẽ chạy
Chúng ta sẽ viết code cho ựiều ựó sau
6 Thêm một xử lý sự kiện cho sự kiện ấn nút
Trong phần tử <Button> XAML ta thêm thuộc ỘClick =Ợ , Intellisense của
VS ( Intellisense: tắnh năng cho phép dự ựoán lệnh trong VS, nó cung cấp một menu pop-up, mục ựắch là ựể giảm thiểu tối ựa sự sai sót trong việc gõ câu lệnh và nhớ các biến ựã ựặt, còn gọi là trợ giúp ngữ cảnh) sẽ cung cấp cho bạn lệnh ựể tạo nên một xử lý sự kiện
Tùy chọn ựược ựánh dấu ựược ựưa vào bằng cách nhấn phắm Enter trên bàn phắm
và nó tạo ra một tên cho xử lý sự kiện click:
Trang 26Tôi muốn viết code và code ñó sẽ ñược thực hiện khi ai ñó nhấp chuột vào nút, vì vậy tôi muốn chuyển ñến phương thức PlayAudioButton_Click () và viết code C # Nhấp chuột phải vào bất cứ nơi nào trên ñó dòng code và chọn
"Navigate to Handler" từ menu ngữ cảnh:
ðiều này mở ra một tập tin gọi là MainPage.xaml.cs trong khu vực chính của Visual Studio
Nếu bạn là lính mới trong việc tạo ra các ứng dụng Windows, Web hoặc ñiện thoại trong Visual Studio, bạn sẽ nhận ra rằng có hai phần ñể các "trang" này tạo ra XAML và design view cho phép chúng ta khai báo viết code XAML Trang code có liên quan (các tập tin cs.) cho phép chúng ta xác ñịnh hành vi trong C # ðây là hai nửa của cùng một khái niệm
Trong Visual Studio, con trỏ của bạn sẽ ñược ñặt giữa ngặc mở và ñóng dấu cho phương thức PlayAudioButton_Click () :
Vì khối code này sẽ thực hiện khi nào có ai ñó chạm vào nút Quack trên
Trang 27Ta sử dụng tên của MediaElement, QuackMediaElement, ựể truy cập vào
nó Gọi phương thức Play() ựể bắt ựầu phát, nói cách khác,chạy tập tin Quack.wav Bây giờ, hãy kiểm tra ứng dụng
7 Chạy ứng dụng
Bạn chạy ứng dụng ở chế ựộ debug như chạy các ứng dụng Console mà chúng ta tạo ra trong C #, bằng cách sử dụng nút Play trên thanh công cụ hoặc sử dụng phắm F5 trên bàn phắm của bạn
Tiếp theo là những gì bạn thấy trên Windows Phone Emulator đó là một máy ảo ựang chạy hệ ựiều hành Windows Phone 8.0 ựầy ựủ Nói cách khác, hệ ựiều hành thực sự nghĩ rằng nó ựang chạy trên một thiết bị ựiện thoại vật lý, tuy nhiên nó là "ảo" Microsoft ựã tạo ra phần mềm bắt chước phần cứng ựiện thoại Chúng tôi sẽ sử dụng ựiện thoại giả lập rộng rãi trong loạt bài này vì nó dễ dàng triển khai kiểm tra của chúng ta trên một ựiện thoại vật lý mỗi khi chúng ta muốn kiểm tra code ựã viết hay thay ựổi Bạn sẽ tìm hiểu thêm về các tắnh năng của ựiện thoại giả lập Emulator ở phần sau
Trang 28Sử dụng chuột ñể mô phỏng việc sử dụng ngón tay gõ lên màn hình ñiện thoại Bấm vào nút Quack màu ñỏ Nếu máy tính của bạn ñược thiết lập ñể nghe
âm thanh thì bạn sẽ nghe tiếng quack của vịt thông qua tai nghe hoặc loa của bạn
ðể dừng ứng dụng, nhấn vào nút hình vuông màu ñỏ trên thanh công cụ :
Tóm tắt :
Chúng ta ñã tạo ra một ứng dụng âm thanh ñơn giản chúng ta ñã học ñược cách ñể tạo một dự án Windows Phone , làm thế nào ñể thay ñổi khai báo code XAML , thêm vài cấu hình ñiều khiển Chúng ta ñã học ñược cách ñể thêm assets cho dự án,tham khảo chúng trong code , và làm thế nào ñể thêm xử lý sự kiện ñáp ứng với các sự kiện nhất ñịnh ñược kích hoạt bởi người dùng cuối Chúng ta ñã làm quen với MainPage.xaml và trang có liên quan MainPage.xaml.cs chúng ta
Trang 29Chúng ta học ñược cách ñể kích hoạt các phương thức ñiều khiển ñể chơi
âm thanh khi người dùng chạm vào nút Cuối cùng, chúng ta ñược biết giả lập Windows Phone như một phương tiện thử nghiệm ứng dụng của chúng ta trong một môi trường ảo
Tuy nhiên, nếu bạn là người mới lần ñầu biết về XAML thì việc có một nền tảng vững chắc về XAML là thực sự quan trọng ñối với bạn, vì vậy trong phần tiếp theo tôi muốn nói về các tính năng của XAML
Trang 30IV- KHÁI NIỆM VỀ XAML
1.Làm việc với XAML
XAML (Extended Application Markup Language) là một ngôn ngữ ñánh dấu khai báo sử dụng ñể tạo giao diện người dùng File XAML là file mô tả cấu trúc của giao diện và những quan hệ giữa các phần tử với các nguồn dữ liệu, các phương thức nếu có của các phần tử
Mỗi phần tử XAML ñại diện cho một ñối tượng cụ thể Phần tử XAML là ñiển hình trực quan nhưng cũng có thể ñại diện cho các nguồn dữ liệu hoặc ñối tượng tùy chỉnh
Có thể xác ñịnh XAML trực tiếp trong trình soạn thảo XAML hoặc sử dụng màn hình designer Mặc dù các nhà thiết kế Visual Studio ñã cố gắng cải thiện liên tục, nhưng vẫn có một số nhiệm vụ chỉ có thể ñược thực hiện trực tiếp trong XAML Bạn sẽ trở nên quen thuộc với cả hai phương pháp tiếp cận( C# và xaml)
và sử dụng con ñường thuận tiện nhất cho từng tình huống
ðiểm khởi ñầu ñiển hình là MainPage.xamlfile , trong ñó ñịnh nghĩa giao diện người dùng ban ñầu, tức là trang ñầu tiên Phần tử gốc là PhoneApplication -Page Thuộc tính X: Class chỉ tên của lớp cơ bản của PhoneApplicationPage ñược ñịnh nghĩa trong code-behind ( Ví dụ -1).Cấu trúc cơ sở Page XAML là :
Trang 312.Namespace - không gian tên
Bên trong khai báo lớp bạn sẽ thấy một loạt các không gian tên XML bắt ñầu bằng xmlns ( viết tắt của xml namespace) theo sau là một dấu hai chấm, sau
ñó là tên của namespace , một dấu bằng và ñường dẫn ñến assembly mà không gian tên ñại diện Ví dụ:
xmlns: phone = "clr-namespace: Microsoft.Phone.Controls; assembly =
Microsoft.Phone"
Ở ñây, không gian XML tên phone ñại diện cho không gian tên Microsoft.Phone.Controls trong Microsoft.Phone Với không gian tên khai báo, bạn có thể sử dụng bất kỳ ñối tượng nào của không gian tên ñó trong XAML Ví dụ,bạn có thể sử dụng ñiều khiển WebBrowser từ không gian tên phone bằng cách tạo ra thẻ :
<Grid x:Name="LayoutRoot" Background="Transparent">
Không gian tên thường ñược tạo ra tự ñộng khi ñiều khiển ñược kéo từ hộp công cụ ñến designer Nếu bạn muốn tham khảo một assembly không có sẵn từ hộp công cụ thì sao? ðể khai báo một xmlns mới, gõ không gian tên XML mới, ta thêm một tên duy nhất và gõ dấu bằng IntelliSense sẽ thả xuống một danh sách các assembly tham chiếu trong dự án cho bạn lựa chọn Hình 3-1 cho thấy một không gian tên XML tên là “my ” và danh sách các assembly từ IntelliSense
Trang 32(hình 3-1) Nếu bạn ñã tạo một lớp public MyClass trong code behind và thêm một không gian tên XML, thì sau ñó bạn có thể sử dụng không gian tên XML này trong các ñánh dấu (từ ñây về sau tôi dùng từ markup ñể chỉ ñoạn code có dùng thẻ ñánh dấu – tag – trong xaml) của xaml (xem hình 3-2) Khi gõ dấu hai chấm, IntelliSense sẽ hiển thị một danh sách các ñối tượng có thể ñược sử dụng, ở ñây là myClass
các lớp ñược tham chiếu phải là kiểu có giá trị trong markup MyClass thừa kế từ FrameworkElement, một kiểu có thể ñược sử dụng trong bố trí XAML
3.Cú pháp XAML
ðể hiểu cú pháp XAML, tốt nhất bắt ñầu từ ñơn giản và từ cách xây dựng Ở ñây ta chưa nói về các phần tử ñiều khiển ñược hổ trợ bởi XAML, tuy nhiên ta tạm thời chấp nhận là các phần tử trong phần này là có sẵn trong hộp công cụ Bạn có thể chép các ñoạn code của các ví dụ vào XAML và quan sát cách chúng hoạt
Trang 33Bạn có thể khai báo thể hiện của một lớp trong XAML bằng cách sử dụng dấu bắt ñầu < tên loại phần tử > và kết thúc phần tử (</tên loại phần tử >) hoặc sử dụng cú pháp "tự ñóng " <tên loại phần tử/> như trong Ví dụ-2:
Ví dụ 2: Cách khai báo thể hiện của lớp
<!—dùng dấu bắt ñầu và kết thúc >
<Button></Button>
<!—dấu tự ñóng >
<Button />
Lưu ý : Bạn hãy thoải mái với cả hai: design view và Xaml views XAML
là ñại diện ñầy ñủ nhất của thiết kế trang, trong khi design view thường (nhưng không luôn luôn) nhanh hơn và dễ dàng sử dụng hơn vì nó trực quan và không phải gõ code
Thuộc tính ñối tượng ñược xác ñịnh thông qua các thuộc tính XAML ðoạn
mã dưới ñây ñịnh nghĩa một nút với thuộc tính Background là "Red"
<button Background="Red" />
Nếu thuộc tính là phức tạp hơn thì xử lý thì thế nào ? Cú pháp " thuộc tính phần tử" cho phép mỗi thuộc tính ñược thể hiện như là cách thể hiện một phần tử riêng biệt ví dụ về thuộc tính Background là tầm thường nhưng lại cho thấy cơ sở của cú pháp thuộc tính phần tử
Trang 34<Button.Background>
<SolidColorBrush Color="Red" />
</Button.Background>
</Button>
Vài ví dụ cuối cùng thẩm ñịnh với kết quả tương tự, tạo một nút với một nền màu
ñỏ Cú pháp phần tử thuộc tính trở nên thực sự hữu ích khi thuộc tính không thể ñược thể hiện trong một chuỗi giá trị ñơn giản Ví dụ trong Ví dụ 4 ta ñịnh nghĩa một background có màu dạng LinearGradientBrush và màu nhạt dần từ màu ñen sang màu ñỏ