Đề 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

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.

pdf140 trang | Chia sẻ: netpro | Lượt xem: 1758 | Lượt tải: 1download
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:

  • pdfNghiê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
Tài liệu liên quan