File App.xaml được dùng đểkhai báo các tài nguyên, kiểu nhưcác đối tượng brush
hay style mà sẽ được dùng trong suốt toàn bộ ứng dụng. Lớp Application (code-behind
của file App.xaml) có thể được dùng đểxửlý các sựkiện ởcấp độ ứng dụng, như
Application_Startup, Application_Exit và Application_UnhandledException.
File Page.xaml mặc nhiên được dùng nhưthành phần giao diện mà nó sẽ được hiển thị
khi ứng dụng được kích hoạt. Chúng ta có thể định nghĩa giao diện bên trong nó, và
chúng ta cũng có thểxửlý các sựkiện gây ra bởi các thành phần giao diện này bên trong
lớp code-behind của file Page.xaml.
140 trang |
Chia sẻ: netpro | Lượt xem: 1854 | Lượt tải: 1
Bạn đang xem trước 20 trang tài liệu Đề tài Nghiên cứu Silversight và xây dựng ứng dụng web hỗ trợ phát triển bài giảng dạng Multimedia, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
file HTML
(không cần dùng Javascript> Silverlight sẽ tự động download file .xap, khởi tạo nó và
chạy nó trên nền của trình duyệt. Điều này cho phép việc chạy ứng dụng Silverlight
không phụ thuộc trình duyệt (Safari, FireFox, IE, ...) và hệ điều hành (Windows, Mac, và
Linux).
Các file HTML và ASP.NET để test cũng được thêm vào sẵn ngay khi tạo project, do vậy
chúng ta chỉ việc đơn giản là nhấn F5 để build, run và test.
SVTH: Thân Hoàng Lộc Trang 48
Nguyễn Anh Việt
Lưu Xuân Việt
Báo cáo đồ án tốt nghiệp GVHD: TS. NGUYỄN CHÁNH THÀNH
- Cách thêm vào các control và bắt các sự kiện
Hiện tại chương trình Digg của chúng ta vẫn chưa có gì, do vậy khi chạy nó các
bạn sẽ chỉ thấy một trang web trống. Chúng ta có thể thay đổi bằng cách mở file
Page.xaml và thêm vào một số nội dung:
Chúng ta sẽ bắt đầu bằng việc thay đổi màu nền của grid và khai báo một nút bấm
bên trong nó. Chúng ta cũng sẽ đặt vá trị cho thuộc tính "x:Name" của nút bấm thành
"MyButton" - điều này sẽ cho phép có thể tham chiếu đến nút bấm này khi lập trình,
chúng ta cũng sẽ đặt giá trị cho các thuộc tính Content, Width và Height:
SVTH: Thân Hoàng Lộc Trang 49
Nguyễn Anh Việt
Lưu Xuân Việt
Báo cáo đồ án tốt nghiệp GVHD: TS. NGUYỄN CHÁNH THÀNH
Khi chạy, chương trình của chúng ta sẽ hiển thị ở giữa trang với một nút bấm có
dòng chữ "Push Me" giống như sau:
SVTH: Thân Hoàng Lộc Trang 50
Nguyễn Anh Việt
Lưu Xuân Việt
Báo cáo đồ án tốt nghiệp GVHD: TS. NGUYỄN CHÁNH THÀNH
Để thêm một "hành vi" cho nút bấm, chúng ta có thể thêm một hàm xử lý sự kiện
"Click" cho nó, để thêm vào, chúng ta sẽ gõ vào tên sự kiện như sau:
Ngay khi đó, VS sẽ nhắc chúng ta thêm hàm xử lý sự kiện vào lớp code-behind:
Chúng ta có thể gõ vào tên của một phương thức mới mà chúng ta muốn tạo, hoặc
chỉ đơn giản nhấn Enter để dùng luôn tên mặc nhiên của nó:
SVTH: Thân Hoàng Lộc Trang 51
Nguyễn Anh Việt
Lưu Xuân Việt
Báo cáo đồ án tốt nghiệp GVHD: TS. NGUYỄN CHÁNH THÀNH
VS sẽ tự thêm vào một hàm xử lý sự kiện trong file code-behind. Chúng ta có thể
dùng hàm này để cập nhật nội dung của nút bấm mỗi khi nhấn chuột lên nó:
SVTH: Thân Hoàng Lộc Trang 52
Nguyễn Anh Việt
Lưu Xuân Việt
Báo cáo đồ án tốt nghiệp GVHD: TS. NGUYỄN CHÁNH THÀNH
Sau khi đã thay đổi giống như trên, chúng ta có thể chạy lại ứng dụng và nhấn lên
nút bấm lần nữa, bây giờ nội dung của nó sẽ được cập nhật lại thành "Pushed!":
SVTH: Thân Hoàng Lộc Trang 53
Nguyễn Anh Việt
Lưu Xuân Việt
Báo cáo đồ án tốt nghiệp GVHD: TS. NGUYỄN CHÁNH THÀNH
SVTH: Thân Hoàng Lộc Trang 54
Nguyễn Anh Việt
Lưu Xuân Việt
Chương 2:
XAML - EXTENSIBLE APPLICATION MARKUP LANGUAGE
(Ngôn ngữ đánh dấu mở rộng)
I. KHÁI NIỆM XAML
1. XAML là gì?
XAML - Extensible Application Markup Language: là ngôn ngữ miêu tả. Bạn có
thể tạo và nhìn thấy các phần tử giao diện người dùng (UI) bên trong việc khai báo
XAML. Bạn cũng có thể sử dụng một file code-Behind tách biệt để đáp ứng những event
và vận dụng đối tượng bạn khai báo trong XAML. Một ngôn ngữ khai báo nền XML rất
trực quan cho việc tạo nên những giao diện từ những mẫu ban đầu tới sản xuất thực tế.
Nhất là những người không có nền thiết kế và kỹ thuật web.
File XAML được sinh ra từ file XML và có tên phần mở rộng là .xaml.
Ví dụ: Trình bày bên trong một file Silverlight cơ bản xaml:
<UserControl x:Class="MySilverlight.Page"
xmlns=""
xmlns:x="">
2. XAML phân biệt dạng chữ (XAML Is Case-Sensitive)
XAML là một ngôn ngữ phân biệt dạng chữ. Đây là điều khác biệt của XAML với
nền XML, sự phân biệt chữ này bởi sự định nghĩa ngôn ngữ XML. Tên của phần tử
XAML và thuộc tính phân biệt chữ. Giá trị của một thuộc tính là khả năng phân biệt chữ;
Báo cáo đồ án tốt nghiệp GVHD: TS. NGUYỄN CHÁNH THÀNH
SVTH: Thân Hoàng Lộc Trang 55
Nguyễn Anh Việt
Lưu Xuân Việt
Điều này sẽ phụ thuộc vào giá trị thuộc tính là như thế nào với handle thuộc tính chung.
Chẳng hạn như, Nếu giá trị thuộc tính khai báo một bảng liệt kê các tên thành viên. Việc
built-in các hành động mà biến đổi các kiểu một chuỗi tên thành viên rồi trả về giá trị của
thành viên trong bảng liệt kê là không có sự phân biệt dạng chữ. Ngược lại, giá trị của
thuộc tính Name tốt hơn những phương thức tiện ích trong sự làm việc với những đối
tượng cơ bản trên cái tên mà đã khai báo thuộc tính Name, có sự phân biệt chữ trong
chuỗi tên đó.
II. CÚ PHÁP KHAI BÁO
Trình bày đối tượng (Declaring Objects)
Có hai cách trình bày đối tượng trong Silverlight:
• Trực tiếp, khai báo cú pháp phần tử đối tượng: Sử dụng việc mở và đóng tag để
khai báo một đối tượng như là một phần tử XML. Bạn có thể sử dụng cú pháp khai
báo đối tượng root hoặc set các giá trị thuộc tính.
• Gián tiếp, khai báo cú pháp thuộc tính: Sử dụng một giá trị bên trong để khai báo
một đối tượng. Bạn có thể sử dụng cú pháp này để set giá trị của thuộc tính. Đây là
một thao tác gián tiếp trong xử lý của XAML, bởi vì chỉ có một vài chuỗi bên dưới
nhận biết làm thế nào để khởi tạo đối tượng mới trên cơ sở thuộc tính đang set và
chuỗi giá trị cung cấp là gì. Tiêu biểu, điều này nghĩa là kiểu và thuộc tính trong
vấn đề hỗ trợ việc chuyển đổi kiểu để có thể làm việc với những chuỗi nhập vào.
Điều này không có nghĩa là bạn luôn có sự lựa chọn trong khai báo cú pháp phần
tử đối tượng hoặc cú pháp thuộc tính nào. Tất nhiên những đối tượng chỉ có thể được khởi
tạo khi khai báo cú pháp phần tử đối tượng. Một số ít các đối tượng chỉ có thể được tạo
Báo cáo đồ án tốt nghiệp GVHD: TS. NGUYỄN CHÁNH THÀNH
SVTH: Thân Hoàng Lộc Trang 56
Nguyễn Anh Việt
Lưu Xuân Việt
khi đã set các giá trị thuộc tính ban đầu. Đối tượng mà có thể được tạo với những phần tử
đối tượng khác hoặc cú pháp thuộc tính là tương đối ít thấy trong Silverlight.
1. Khai báo một đối tượng bằng cách khai báo cú pháp phần tử đối tượng
(Declaring an Object by Using Object Element Syntax)
Để khai báo một đối tượng bằng cách khai báo cú pháp phần tử đối tượng, bạn viết
bằng hai phần tử tag sau đây:
objectName là tên của đối tượng bạn muốn thể hiện.
Ví dụ: Cú pháp khai báo một đối tượng Canvas:
Báo cáo đồ án tốt nghiệp GVHD: TS. NGUYỄN CHÁNH THÀNH
SVTH: Thân Hoàng Lộc Trang 57
Nguyễn Anh Việt
Lưu Xuân Việt
Một sự tiện lợi là: nếu đối tượng không chứa những đối tượng khác, bạn có thể
khai báo phần tử đối tượng bằng cách sử dụng một tag đóng thay vì một cặp tag mở/đóng,
ví dụ như tag trong ví dụ sau:
2. Khai báo một đối tượng sử dụng cú pháp thuộc tính (Declaring an Object by
Using Attribute Syntax)
Trong một vài trường hợp, nơi mà chứa giá trị thuộc tính không nguyên thủy là
một chuỗi, bạn có thể sử dụng cú pháp thuộc tính để khai báo kiểu đối tượng và set cả hai
đặc tính cho đối tượng đó. Trong đó, có một đặc tính chính để định nghĩa đối tượng mới.
Bởi vì những hành vi này thường trú trong thuộc tính của đối tượng.
III. SETTING PROPERTIES
Bạn có thể set các thuộc tính trên đối tượng mà bạn khai báo bằng cách sử dụng cú
pháp phần tử đối tượng. Có nhiều cách để set các thuộc tính trong XAML:
• Sử dụng cú pháp thuộc tính.
• Sử dụng cú pháp phần tử đặc tính.
• Sử dụng cú pháp phần tử nội dung.
• Sử dụng một cú pháp tập hợp.
Giống như việc khai báo một đối tượng, danh sách kỹ thuật này không đưa ra hay
dựa vào việc set thuộc tính với bất kỳ kỹ thuật nào. Một vài thuộc tính chỉ có thể áp dụng
duy nhất một kỹ thuật. Một vài thuộc tính lại có thể sử dụng kết hợp. Ví dụ như một thuộc
Báo cáo đồ án tốt nghiệp GVHD: TS. NGUYỄN CHÁNH THÀNH
SVTH: Thân Hoàng Lộc Trang 58
Nguyễn Anh Việt
Lưu Xuân Việt
tính mà những sự hỗ trợ cúp pháp phần tử nội dung cũng có thể được hỗ trợ cú pháp phần
tử đặc tính hoặc cú pháp thuộc tính. Điều này phụ thuộc vào thuộc tính sử dụng là trên
thuộc tính hay trên loại đối tượng. Cú pháp XAML được cung cấp bên trong phần
"XAML Usage" của những trang tham chiếu cho mỗi thuộc tính có thể set trong XAML.
Silverlight cũng có thuộc tính mà không thể set trong XAML nhưng có thể set khi khai
báo code.
Không có cánh nào để có thể set thuộc tính Read-only, kể cả trong XAML hoặc
trong code trừ khi có một kỹ thuật thêm vào trong lúc phát. Có thể gọi một hàm khởi tạo
bên ngoài và set nội dung thuộc tính muốn trình bày trong hàm đó. Một phương thức mà
không hoàn toàn truy xuất thuộc tính, hoặc một quan hệ thuộc tính như là thuộc tính tính
toán phải dựa vào giá trị thuộc tính trên bảng tính, có thể cộng thêm một dịch vụ hoặc một
hành vi tác động trên giá trị thuộc tính đó. Ngoài ra, những tập hợp đưa ra sự xuất hiện
mà bạn có thể set thuộc tính Read-only nhưng thực tế là không phải như vậy.
1. Khai báo cú pháp thuộc tính trong việc set một đặc tính (Setting a Property by
Using Attribute Syntax)
Sử dụng cú pháp sau:
Hoặc:
<!-- không đặt nội dung phần tử con ở đây nếu kiểu nội
dung của phần tử không cho phép -->
Báo cáo đồ án tốt nghiệp GVHD: TS. NGUYỄN CHÁNH THÀNH
SVTH: Thân Hoàng Lộc Trang 59
Nguyễn Anh Việt
Lưu Xuân Việt
objectName: Tên đối tượng muốn trình bày.
propertyName: Tên của thuộc tính muốn set cho đối tượng.
propertyValue: Giá trị thuộc tính muốn set.
Ví dụ: Khai báo một hình chữ nhật với chiều rộng 100pixel, chiều cao 100pixel, và màu
viền là blue.
2. Khai báo cú pháp thuộc tính phần tử việc set một đặc tính (Setting a Property by
Using Property Element Syntax)
Để sử dụng cú pháp này, cần tạo những phần tử XML cho thuộc tính muốn set.
Những phần tử này được đặt trong mẫu . Trong XML chuẩn, phần tử
này chỉ là một phần tử miêu tả chỉ xảy ra khi có một chấm trong tên của nó. Ngoài ra,
trong XAML dấu chấm trên tên của phần tử khai báo một thuộc tính của phần tử đó. Và
thuộc tính này cũng là thuộc tính của đối tượng.
Sử dụng cú pháp:
propertyValueAsObjectElement
Báo cáo đồ án tốt nghiệp GVHD: TS. NGUYỄN CHÁNH THÀNH
SVTH: Thân Hoàng Lộc Trang 60
Nguyễn Anh Việt
Lưu Xuân Việt
: property là tên thuộc tính muốn set cho đối tượng.
propertyValueAsObjectElement: khai báo một đối tượng mới với kiểu
giá trị tùy thích .
Ví dụ:
3. Khai báo cú pháp set đặc tính nội dung phần tử (Setting a Property by Using
Content Element Syntax)
Một vài đối tượng Silverlight xác định một thuộc tính mà cho phép một cú pháp
XAML, nhờ đó bạn có thể bỏ qua tên thuộc tính và set thuộc tính một cách dễ dàng bởi sự
cung cấp một giá trị bên trong những tab riêng chứa kiểu của phần tử đối tượng. Đây
nghĩa là cú pháp phần tử nội dung. Nếu cú pháp phần tử nội dung là sẵn có, cú pháp này
sẽ đưa ra bên trong phần sử dụng XAML cho thuộc tính bên trong Silverlight tham chiếu
tới.
Ví dụ:
Trang thuộc tính Text cho TextBlock luân phiên đưa ra cú pháp XAML mà sử
dụng cú pháp phần tử nội dung thay vì sử dụng cú pháp thuộc tính để set giá trị chuỗi
Text.
Set giá trị thuộc tính Text của TextBlock mà hoàn toàn không dùng thuộc tính
Text. Trong trường hợp này, thuộc tính set là khai báo những gì bên trong nội dung XML
hoặc “nội bộ text” hơn là khai báo những thuộc tính hoặc trình bày một phần tử đối
tượng.
Báo cáo đồ án tốt nghiệp GVHD: TS. NGUYỄN CHÁNH THÀNH
SVTH: Thân Hoàng Lộc Trang 61
Nguyễn Anh Việt
Lưu Xuân Việt
Hello!
4. Khai báo cú pháp tập hợp (Setting a Property by Using a Collection Syntax)
Tập hợp là một trường hợp cần quan tâm trong XAML, bởi vì có vài biến đối trong
cú pháp tập hợp. Vì vậy, khả năng đầu tiên trong XAML là coi việc set này như Read-
only cho tập thuộc tính. Trong thực tế, XAML ở đây thêm những Item vào trong tập hợp.
Thuộc tính của kiểu tập hợp luôn được lấy là thuộc tính tập hợp các Item. Thỉnh
thoảng điều này luôn được bỏ qua từ cú pháp tập hợp XAML. Trong nhiều trường hợp,
thuộc tính này được khai báo như là một chỉ mục CLR. Đối với những tập hợp, thuộc tính
thực ra không phải là điều quan trọng để bất cứ cái gì là hữu ích với tập hợp từ XAML mà
là việc thêm một phương thức. Như vậy, khi bắt gặp xử lý XAML một hoặc nhiều phần tử
đối tượng bên trong một cú pháp tập hợp, mỗi đối tượng này như là được tạo ra đầu tiên,
và mỗi đối tượng mới là việc thêm vào trong tập hợp điều này được gọi là phương thức
thêm của tập hợp.
Ví dụ:
<!-- Here the GradientStopCollection tag is
specified. -->
Báo cáo đồ án tốt nghiệp GVHD: TS. NGUYỄN CHÁNH THÀNH
SVTH: Thân Hoàng Lộc Trang 62
Nguyễn Anh Việt
Lưu Xuân Việt
Bên cạnh đó, trong sự tổng quát của một thuộc tính Silverlight mà nắm bắt một tập hợp,
các phân tách XAML hoàn toàn biết kiểu nào là của tập hợp cơ bản trong thuộc tính tập
hợp chứa đựng nó. Vì vậy, bạn có thể bỏ qua thuộc tính của đối tượng đối với chính tập
hợp đó. Như ví dụ bên dưới:
<!-- no explicit new GradientStopCollection, parser
knows how to find or create -->
Hơn nữa, có một thuộc tính được gọi là thuộc tính tập hợp, nhưng nó cũng chỉ nhận dạng
như là một thuộc tính bên trong cho lớp đó. Trường hợp này với thuộc tính GradientStops
sử dụng trong ví dụ trên. Vì vậy, bạn cũng có thể bỏ quên thuộc tính của đối tượng, kết
quả tạo thành:
Báo cáo đồ án tốt nghiệp GVHD: TS. NGUYỄN CHÁNH THÀNH
SVTH: Thân Hoàng Lộc Trang 63
Nguyễn Anh Việt
Lưu Xuân Việt
Sự kết hợp này của tập hợp và cú pháp nội dung là sự phổ biến thường thấy trong
những lớp mà sử dụng một cách tổng quát cho những cotrol kết hợp, chẳng hạn như
những Panel.
Ví dụ:
Hello
World
Hello
World
5. Khi nào thì sử dụng thuộc tính hoặc cú pháp đặc tính phần tử để set thuộc tính?
(When to Use Attribute or Property Element Syntax to Set a Property )
Tất cả các đặc tính mà được hỗ trợ để Set trong XAML sẽ hỗ trợ các thuộc tính
hoặc cú pháp đặc tính phần tử trong việc set trực tiếp các giá trị,. Nhưng có khả năng sẽ
Báo cáo đồ án tốt nghiệp GVHD: TS. NGUYỄN CHÁNH THÀNH
SVTH: Thân Hoàng Lộc Trang 64
Nguyễn Anh Việt
Lưu Xuân Việt
không hỗ trợ cho những cú pháp thay thế tương tự. Một vài thuộc tính không hỗ trợ cú
pháp này, và một vài thuộc tính hỗ trợ thêm vào những cú pháp tùy chọn, chẳng hạn cú
pháp nội dung phần tử để đưa ra đoạn text như ở trên.
XAML hỗ trợ từng phần sẽ có những kiểu thuộc tính riêng trong cú pháp. Nếu kiểu
của thuộc tính là kiểu nguyên thủy, chẳng hạn như: double, integer, hoặc string thì những
cú pháp thuộc tính hỗ trợ cũng có kiểu như vậy.
Ví dụ sử dung cú pháp thuộc tính để set độ rộng của hình chữ nhật. Thuộc tính độ
rộng hỗ trợ cú pháp thuộc tính bởi vì giá trị thuộc tính này là double:
Bạn cũng có thể sử dụng cú pháp thuộc tính để set một thuộc tính nếu kiểu đối
tượng mà bạn sử dụng để set mà thuộc tính có thể được tạo ra bởi sự chuyển đổi thuộc
tính một chuỗi. Bên cạnh đó, chắc chắn những kiểu của đối tượng khác cũng có thể được
tạo bằng cách định nghĩa một chuỗi như là một giá trị thuộc tính (Thay vì phụ thuộc vào
cú pháp phần tử đối tượng). Kỹ thuật này dựa trên cơ sở chuyển đổi kiểu, hỗ trợ nhiều cho
những thuộc tính riêng hơn là thuộc tính chung trong những kiểu thuộc tính. Chuỗi giá trị
của thuộc tính là từng phần và chuỗi thông tin là sử dụng set thuộc tính chủ yếu cho
những đối tượng mới khởi tạo. Đôi khi, một kiểu chuyển đổi đặc biệt cũng có khả năng
tạo những phân lớp khác nhau của những kiểu thuộc tính phổ biến, phụ thuộc vào thông
tin xử lý duy nhất như thế nào trong chuỗi. Kiểu đối tượng mà hỗ trợ hành vi này sẽ có
một danh sách ngữ pháp đặc biệt trên từng phần tài liệu cú pháp.
Ví dụ sau sử dụng cú pháp thuộc tính set Fill của một hình chữ nhật. Thuộc tính
Fill hỗ trợ một cú pháp thuộc tính khi bạn sử dụng SolidColorBrush để set nó. Bởi vì kiểu
trừu tượng Brush đằng sau thuộc tính Fill hỗ trợ một kiểu chuyển đổi ngữ pháp mà có thể
Báo cáo đồ án tốt nghiệp GVHD: TS. NGUYỄN CHÁNH THÀNH
SVTH: Thân Hoàng Lộc Trang 65
Nguyễn Anh Việt
Lưu Xuân Việt
tạo ra một SolidColorBrush cùng lúc với thuộc tính. Trên lý thuyết chuỗi này là một
Color:
Bạn có thể sử dụng cú pháp phần tử thuộc tính để set một thuộc tính nếu đối tượng
bạn sử dụng để set thuộc tính hỗ trợ cú pháp phần tử thuộc tính. Nếu đối tượng hỗ trợ cú
pháp đối tượng thuộc tính đối tượng, thuộc tính cũng hỗ trợ cú pháp phần tử thuộc tính.
Ví dụ sử dụng cú pháp thuộc tính phần tử để set Fill một hình chữ nhật. Thuộc tính Fill hỗ
trợ cú pháp phần tử thuộc tính khi bạn sử dụng SolidColorBrush để set nó. Bởi vì
SolidColorBrush hỗ trợ cú pháp phần tử đối tượng và đáp ứng yêu cầu thuộc tính với giá
trị được set là một kiểu của Brush.
Bởi vì kiểu chuyển đổi của Brush, SolidColorBrush xảy ra chỉ với trường hợp
Brush nơi mà bạn có thể chọn cú pháp phần tử thuộc tính này hay cú pháp thuộc tính kia
cho một giá trị Fill mới. Với những kiểu Brush khác bạn có thể sử dụng việc set Fill sử
dụng một kiểu Brush như là ImageBrush . Bạn chỉ nên sử dụng cú pháp thuộc tính phần
tử cho Fill và khai báo một ImageBrush như là một phần tử đối tượng cung cấp giá trị
thuộc tính hoặc sử dụng tạo một phần mở rộng.
Báo cáo đồ án tốt nghiệp GVHD: TS. NGUYỄN CHÁNH THÀNH
SVTH: Thân Hoàng Lộc Trang 66
Nguyễn Anh Việt
Lưu Xuân Việt
IV. THÀNH PHẦN MỞ RỘNG (Markup Extensions)
Thành phần mở rộng là một khái niệm của ngôn ngữ XAML, thường được sử dụng
trong sự thi hành của Silverlight XAML. Trong cú pháp thuộc tính của XAML, cặp dấu
ngoặc ({ và }) thường dùng để chỉ phần mở rộng do XAML qui định. Cách sử dụng này
giúp cho những xử lý của XAML tránh được những xử lý chung của giá trị thuộc tính
cũng như là những chuỗi khác hoặc những giá trị chuỗi thường thay đổi. Thay vào đó,
một kiểu phân tách gọi code diễn ra ngay sau phần mở rộng nhằm giúp cho việc khởi tạo
một cây đối tượng.
Silverlight hỗ trợ ba cách mở rộng đã được định nghĩa bên dưới Namespace XML
và được hiểu ngầm trong phân tích cú pháp XAML. Bao gồm: Binding, StaticResource,
và TemplateBinding. Binding hỗ trợ việc liên kết data. StaticResource hỗ trợ việc tham
chiếu tài nguyên đã được khai báo trong một ResourceDictionary. TemplateBinding hỗ
trợ những control Template trong XAML mà có thể tương tác với thuộc tính code của đối
tượng Template. Silverlight cũng thi hành một sự mở rộng mà được khai báo bên trong
Namespace XAML x:Null.
Ví dụ:
Báo cáo đồ án tốt nghiệp GVHD: TS. NGUYỄN CHÁNH THÀNH
SVTH: Thân Hoàng Lộc Trang 67
Nguyễn Anh Việt
Lưu Xuân Việt
...
...
V. EVENTS
XAML là một ngôn ngữ khai báo cho đối tượng và những thuộc tính của đối
tượng, nhưng nó cũng bao gồm một cú pháp cho việc kèm theo những event handler tới
đối tượng trong phần khởi tạo. Bạn có thể chỉ rõ tên event như là một tên thuộc tính trên
đối tượng mà có event xảy ra. Với những giá trị thuộc tính, bạn có thể chỉ định rõ tên của
những hàm event-handler mà bạn khai báo trong code. Xử lý XAML sử dụng tên này tạo
một mô tả đại diện trong cây đối tượng tải lên và thêm những handler tới danh sách
handler bên trong.
Trong XAML, API thường sử dụng (managed hoặc JavaScript) ảnh hưởng tới kỹ
thuật của chỉ định những event handler. API loại trừ lẫn nhau trên từng vi trí của trang
XAML. Dấu hiệu cho mỗi API hiện hành là sự có mặt hay vắng mặt của x:lớp thuộc tính
trên phần tử root của trang. Nếu x: lớp đã tồn tại, thì trang sử dụng managed API. Nếu x:
lớp không tồn tại, trang sẽ sử dụng JavaScript API.
Trong managed API, event handler chỉ tồn tại trong file code-behind mà kết hợp
với trang XAML hiện tại. Bởi vì những lớp riêng này từ XAML và code thỉ tham gia vào
trong việc thêm vào một handler.
Ví dụ: event Loaded cho một Canvas:
Báo cáo đồ án tốt nghiệp GVHD: TS. NGUYỄN CHÁNH THÀNH
SVTH: Thân Hoàng Lộc Trang 68
Nguyễn Anh Việt
Lưu Xuân Việt
<Canvas xmlns=
Loaded="onLoaded" />
Tên hàm onLoaded được khai báo bên trong file JavaScript. File JavaScript này kết hợp
với HTML của trang chính thông qua tham số src của tag trong HTML.
<!-- Reference the JavaScript file where the event
functions are defined
from the plug-in host HTML page. -->
...
VI. XAML, EVENTS, và CODE-BEHIND
Hầu hết ứng dụng nền Silverlight đều được sinh ra từ markup và code-behind.
Trong một project, XAML dùng để viết như là một file .xaml và một ngôn ngữ CLR như
là Visual Basic hoặc C# viết file code-behind . Khi một file XAML biên dịch, vị trí của
file code-behind cho mỗi trang XAML được nhận ra bởi một Namespace và một lớp
x:class thuộc tính của phần tử root của trang XAML.
Ứng dụng chính – mức kỹ thuật cho việc thêm vào một hành vi cho phần tử đối
tượng là sử dụng một event đã tồn tại của lớp, và viết một handle riêng triệu gọi event này
khi xuất hiện trong thời gian thực thi. Tên event và tên của handler được sử dung theo
kiểu đã được dựng trước, trong khi code thi hành những handler này đã được khai báo
trong code-behind.
Báo cáo đồ án tốt nghiệp GVHD: TS. NGUYỄN CHÁNH THÀNH
SVTH: Thân Hoàng Lộc Trang 69
Nguyễn Anh Việt
Lưu Xuân Việt
VII. NHỮNG PHẦN TỬ ROOT XAML VÀ xmlns (XAML Root Elements
and xmlns)
Một file XAML chỉ chứa một phần tử root.
Ví dụ: trình bày một phần tử root của XAML đặc trưng cho trang Silverlight với phần tử
root UserControl:
<UserControl x:Class="MySilverlight.Page"
xmlns=""
xmlns:x="">
Phần tử root cũng chứa đựng thuộc tính xmlns và xmlns:x. Hai thuộc tính này cho
biết bộ xử lý XAML mà Namespace XML nào chứa phần tử định nghĩa cho các phần tử
mà nó tham chiếu tới.
Thuộc tính xmlns trong ví dụ trên cho biết rõ Namespace XML mặc định. Trong
Namespace XML mặc định, những phần tử đối tượng trong markup có thể đưa ra mà
không được dự báo trước. Trong Silverlight, Namespace XML mặc định luôn luôn là
Silverlight client namespace
.lns:x thuộc tính trong ví dụ trên cho biết Namespace XML đã thêm vào. Bản đồ
Namespace trong ngôn ngữ XAML
. Thành phần ngôn
Báo cáo đồ án tốt nghiệp GVHD: TS. NGUYỄN CHÁNH THÀNH
SVTH: Thân Hoàng Lộc Trang 70
Nguyễn Anh Việt
Lưu Xuân Việt
ngữ khai báo bởi Namespace XAML bắt đầu bằng: x: khi tham chiếu trong markup của
một file với bản đồ này. Cách sử dụng này của xmlns định nghĩa một phạm vi cho cách sử
dụng và bản đồ thích hợp, được nêu rõ trong XML 1.0. Chú ý thuộc tính xmlns là duy
nhất cần thiết trên phần tử root cho mỗi trang và xác định cho mỗi ứng dụng nếu nó được
cung cấp trong markup. Định nghĩa xmlns áp dụng cho tất cả các phần tử con của root, và
cũng áp dụng cho bất kỳ phần tử con trong những phần tử đã khai báo. Tuy nhiên, cách sử
dụng này không phải là điểm mạnh trong Silverlight, bởi vì sự định nghĩa thường xuyên
hoặc định nghĩa lại Namespace XML có thể đưa ra những kết quả đọc được khác nhau
trong kiểu XAML markup.
Để tùy chỉnh những assemblies riêng hoặc những assemblies bên ngoài Silverlight
bạn có thể chỉ định rõ assembly như trong phần bản đồ Namespace XML. Tuy nhiên, bạn
chọn một tiền tố khác và không phải giá trị mặc định như Namespace, nhưng nó cũng có
một sự lựa chọn khác Namespace XML như là giá trị mặc định và khi đó nó vạch ra cho
Silverlight một tiếp đầu ngữ.
Tiếp đầu ngữ x: (The x: Prefix)
Trong ví dụ phần tử root ở trên, tiếp đầu ngữ x: đã được sử dụng tới bản đồ
Namespace XAML
Tiếp đầu ngữ x: này sử dụng bản đồ Namespace XAML trong những Template cho
project nền Silverlight, trong ví dụ và xuyên suốt tài liệu này. Tiếp đầu ngữ x:/ XAML
Namespace chứa đựng vài cấu trúc lập trình mà bạn sẽ sử dụng khá thường xuyên trong
XAML. Sau đây là x: prefix/XAML namespace trong khởi tạo lập trình phổ biến mà bạn
sẽ sử dụng:
• x:Key: set một khóa duy nhất cho mỗi tài nguyên trong ResourceDictionary.
• x:Class: chỉ định rõ Namespace DLR và class name mà được tạo ra trong khi biên
dịch backup. Bạn chỉ có một lớp hỗ trợ code-behind, hoặc hỗ trợ khởi tạo như là
Báo cáo đồ án tốt nghiệp GVHD: TS. NGUYỄN CHÁNH THÀNH
SVTH: Thân Hoàng Lộc Trang 71
Nguyễn Anh Việt
Lưu Xuân Việt
RootVisual, và nó đưa ra những lý do để bạn luôn thấy x:mapped ngang cấp nếu
không có tài nguyên.
• x:Name: Định rõ tên một đối tượng thực thi cho trường hợp tồn tại code thực thi
sau khi một phần tử đối tượng khai báo trong XAML được xử lý. Bạn sử dung
x:Name cho tên kịch bản thường xuyên gặp trong nhiều nơi thuận tiện thuộc tính
FrameworkElement.Name không hỗ trợ như là trong storyboards
Báo cáo đồ án tốt nghiệp GVHD: TS. NGUYỄN CHÁNH THÀNH
SVTH: Thân Hoàng Lộc Trang 72
Nguyễn Anh Việt
Lưu Xuân Việt
Chương 3:
CHI TIẾT MỘT SỐ THÀNH PHẦN NGÔN NGỮ TRONG
THIẾT KẾ TRỰC QUAN
I. SILVERLIGHT LAYOUT SYSTEM
Layout System là gì?
Thuật ngữ “Layout” mô tả kích thước và vị trí của những phần tử thành phần tập
hợp con (Children) trong một Panel và vẽ chúng lên trên màn ảnh. Ở đây tập trung
những tiến trình, những tập hợp con (Children) rộng lớn và mức độ xử lý quy mô. Sự
phức tạp cũng dựa trên cơ sở những khai báo thể hiện ra bên ngoài bởi những tập hợp
riêng và những phần tử Panel. Một liên tưởng đơn giản như Canvas có thể đưa ra
những
Các file đính kèm theo tài liệu này:
- Nghiên cứu Silversight và xây dựng ứng dụng web hỗ trợ phát triển bài giảng dạng Multimedia.pdf