Tài liệu Đồ án Tổng quan về silverlight: 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 1
Nguyễn Anh Việt
Lưu Xuân Việt
Phần I:
TỔNG QUAN VỂ SILVERLIGHT
Chương 1:
GIỚI THIỆU VỀ SILVERLIGHT
I. KHÁI QUÁT SILVERLIGHT
Microsoft Silverlight là một công nghệ đa nền, đa trình duyệt dựa trên nền .NET
dùng để xây dựng và phát triển một thế hệ ứng dụng Web và thiết bị mới, đầy tính tương
tác và hỗ trợ tối đa về media (phương tiện truyền thông). Hiện nay Silverlight đang có hai
phiên bản là Silverlight 1.0 dùng phát triển ứng dụng bằng ngôn ngữ Javascript và một
phiên bản Silverlight 2.0 bằng các ngôn ngữ .NET framework (khung) như C# hay
VB.NET. Bên cạnh đó công nghệ Silverlight còn được hỗ trợ bởi ngôn ngữ đánh dấu
XAML (extensible application markup language – Ngôn ngữ đánh dấu mở rộng) đầy sức
mạnh trong việc thể hiện giao diện người dùng. Có thể nói công nghệ Silverlight đã thống
nhất được tất cả các khả năng của server, Web và ứng dụng desktop, của code .NET, c...
140 trang |
Chia sẻ: hunglv | Lượt xem: 1551 | Lượt tải: 1
Bạn đang xem trước 20 trang mẫu tài liệu Đồ án Tổng quan về silverlight, để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trê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 1
Nguyễn Anh Việt
Lưu Xuân Việt
Phần I:
TỔNG QUAN VỂ SILVERLIGHT
Chương 1:
GIỚI THIỆU VỀ SILVERLIGHT
I. KHÁI QUÁT SILVERLIGHT
Microsoft Silverlight là một công nghệ đa nền, đa trình duyệt dựa trên nền .NET
dùng để xây dựng và phát triển một thế hệ ứng dụng Web và thiết bị mới, đầy tính tương
tác và hỗ trợ tối đa về media (phương tiện truyền thông). Hiện nay Silverlight đang có hai
phiên bản là Silverlight 1.0 dùng phát triển ứng dụng bằng ngôn ngữ Javascript và một
phiên bản Silverlight 2.0 bằng các ngôn ngữ .NET framework (khung) như C# hay
VB.NET. Bên cạnh đó công nghệ Silverlight còn được hỗ trợ bởi ngôn ngữ đánh dấu
XAML (extensible application markup language – Ngôn ngữ đánh dấu mở rộng) đầy sức
mạnh trong việc thể hiện giao diện người dùng. Có thể nói công nghệ Silverlight đã thống
nhất được tất cả các khả năng của server, Web và ứng dụng desktop, của code .NET, của
ngôn ngữ hình thể và ngôn ngữ truyền thống và sức mạnh của Windows Presentation
Foundation (WPF). Để cuối cùng tạo ra một ứng dụng mà người dùng phải thấy thích.
Một số người cho rằng công nghệ Silverlight của Microsoft sẽ là “sát thủ” của Adobe
Flash. Nhưng hiện tại thì chưa thể biết được điều gì, vì cả hai công nghệ này đều được sử
dụng bằng plug in của trình duyệt, cả hai đều hỗ trợ đồ họa vector, âm thanh, phim ảnh,
animation và ngôn ngữ script.
Về mặt căn bản thì công nghệ này có sự khác biệt. Trong khi Flash sử dụng định dạng
nhị phân semi-open, thì Silverlight dựa trên nền WPF. Thực tế trước khi công nghệ mới
này của Microsoft được đặt tên là Silverlight thì nó đã có tên mã là WPF/e (Windows
Presentation Foundation Everywhere).
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 2
Nguyễn Anh Việt
Lưu Xuân Việt
Điểm quan trọng nhất trong công nghệ Silverlight là hệ thống đồ họa con được hỗ trợ
bởi một nhánh trong WPF, bao gồm các đoạn mã thể hiện âm thanh, phim ảnh.
Được công bố tại Mix’07 vào tháng 5 năm 2007, SilverLight mang đến cho thế giới
một cơn bão với một cái nhìn về Adobe Flash giống như ứng dụng Internet (RIAs) được
xây dựng trên một nền cơ bản, mở ra cách tiếp cận với HTML và XAML sử dụng các
công cụ như VisualStudio .NET và Microsoft Blend.Ý tưởng cho SilverLight thì không
có gì mới, Microsoft đang nói về công nghệ gọi là WPF/e trước đây hơn 1 năm.Quan tâm
đầy đủ thì đây là sự lẫn lộn xung quanh WPF/e có nghĩa là gì, tên cần thay đổi với cái gì
đó hoàn toàn khác, một tên mà không liên quan tới WPF/e với khách hàng thông minh,
thế hệ kế tiếp của nền Giao diện người dùng (UI) Nền tảng biểu diễn Windows( WPF).
Ý tưởng của chữ e ở cuối WPF là chuyển WPF đi khắp mọi nơi. Nhưng đây đơn
giản không phải là một trường hợp. WPF này là một phần nhân của .NET 3.0 và yêu cầu
30MB khi chạy. WPF/e có 2MB khi download, chạy trong bộ trình duyệt, và chạy trên
nhiều nền tảng khác nhau.Và nhiều nền ở đây không có nghĩa là WindowsXP và
WindowsVista; Nó có nghĩa là Windows và Apple Macintosh.Nó hoạt động trên bộ trình
duyệt web safari trong Apple Macintosh được phục vụ từ một Máy chủ web Apache chạy
trên Linux. Tên WPF/e không phải là đại diện đầy đủ cho việc đáng kinh ngạc của công
nghệ mới này, vì vậy mà SilverLight đựơc công bố như tên mới tại Mix’07.
Kiến trúc của Silverlight cũng khá phức tạp. Hệ thống đồ họa đảm bảo mọi thứ cho
giao diện người dùng, như animation, text, âm thanh, hình ảnh. Plug-in được tích hợp vào
trình duyệt để thể hiện ứng dụng Silverlight, để giao tiếp bằng JavaScript DOM và ứng
dụng Silverlight có thể gọi các hàm trên server như một dạng web service.
Dù người phát triển ứng dụng là người phát triển web hay người thiết kế đồ họa thì
Silverlight đều tạo điều kiện tốt nhất để người đó có thể phát huy tối đa khả năng của
mì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 3
Nguyễn Anh Việt
Lưu Xuân Việt
1. Silverlight (Ánh sáng bạc) là gì?
SilverLight đơn giản là một nền Web được xây dựng để chạy RIAs. Một phần của
nền web đó thực chất là một Plug-in mà chạy bên trong bộ trình duyệt.
- Silverlight là một nền chéo, nền trình duyệt chéo của RIAs
- Silverlight hỗ trợ phát lại Windows Media và các file âm thanh trên PC và MAC
mà không phụ thuộc vào Windows Media Player
- Sử dụng XAML, HTML, và JavaScript, nó hỗ trợ đồ họa, hoạt ảnh, đa phương
tiện và mở rộng ra hơn những gì mà AJAX có thể hỗ trợ.
- Gói lắp đặt nhỏ hơn 6MB.
- XAML được tạo ra cho SilverLight có thể được sử dụng trong những ứng dụng
WPF
Microsoft Silverlight là một plug-in dựa trên .NET, độc lập với nền tảng và trình
duyệt cho phép phát triển các ứng dụng đa phương tiện và nặng về tương tác trên Web.
Silverlight cung cấp một mô hình lập trình mềm dẻo và đồng nhất, nó hỗ trợ AJAX,
Python, Ruby, và các ngôn ngữ trên nền .NET như Visual Basic và C#, và có thể tích hợp
vào các ứng dụng Web sẵn có. Các khả năng về đa phương tiện của Silverlight bao gồm
truyền tải dữ liệu hình ảnh, âm thanh chất lượng cao một cách nhanh chóng và hiệu quả
về chi phí trên tất cả các trình duyệt chính như FireFox, Safari, và Internet Explorer chạy
trên nền Mac hoặc Windows. Với Expression Studio và Visual Studio, nhà phát triển và
nhà thiết kế có thể hợp tác một cách hiệu quả, dùng các kỹ năng hiện có để phát triển các
sản phẩm Web tương lai.
2. Silverlight – Ứng dụng cơ bản với sự phong phú trong đồ họa và tương tác với
người dùng (User).
Người lập trình Web và thiết kế đồ họa có thể tạo ra nhiều ứng dụng Silverlight cơ
bản với sự đa dạng trong cách thể hiện. Ta cũng có thể sử dụng Silverlight Markup để tạo
ra Media và Graphics và vận dụng chúng với sự đa dạng của ngôn ngữ và quản lý Code.
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 4
Nguyễn Anh Việt
Lưu Xuân Việt
Silverlight cũng cho phép bạn sử dụng những công cụ chất lượng chuyên nghiệp như
Visual Studio cho coding và Microsoft Expression Blend cho thiết kế hình ảnh và giao
diện.
3. Nét đặc trưng của Silverlight.
Silverlight kết hợp nhiều kỹ thuật trong việc phát triển một nền tảng đơn mà cho
phép ta chọn lựa những công cụ và ngôn ngữ lập trình thích hợp mà ta cần tới. Các tính
năng của Silverlight:
- WPF và XAML: Silverlight gồm có một tập kỹ thuật con WPF (Windows
Presentation Foundation) gồm nhiều thành phần mở rộng trong trình duyệt dành
cho UI. WPF cho phép ta tạo ra những hình ảnh, hoạt cảnh (amination), media và
nhiều nét đặc trưng phong phú trên máy trạm (Client), phần mở rộng của trình
duyệt cơ bản UI ngoại trừ những gì chỉ có hiệu lực với HTML. XAML (Extensible
Application Markup Language) cung cấp một cú pháp khai báo “Markup” tạo ra
các phần tử để xây dựng những ứng dụng Silverlight cơ bản như: text, controls,
graphics, và animation.
- Mở rộng với JavaScipt. Silverlight không những cung cấp những phần mở rộng
của các ngôn ngữ kịch bản trong nhiều trình duyệt phổ biến mà còn cung cấp các
“Control” bên trong trình duyệt UI, bao gồm cả khả năng làm việc với các phần tử
WPF.
- Hỗ trợ những nền tảng (platform), trình duyệt đa nhiệm. Silverlight chạy trên hầu
hết các trình duyệt đa nhiệm (Bất kỳ nền tảng nào). Chúng ta có thể thiết kế và
trình bày mà không phải lo lắng về vấn đề trình duyệt nào hoặc nền tảng nào
(platform) và người sử dụng có hay không.
- Tương thích với mọi ứng dụng hiện tại. Silverlight tương thích hoàn toàn với với
mã JavaScript, ASP.NET AJAX hiện nay kể cả những hàm mở rộng ta đã khởi tạo.
Ta có thể khởi tạo một tài nguyên cơ bàn trên máy chủ (Server) trong ASP.NET và
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 5
Nguyễn Anh Việt
Lưu Xuân Việt
sử dụng khả năng của AJAX trong ASP.NET để tương tác với tài nguyên đó mà
không cần ngắt người dùng.
- Truy xuất kiểu lập trình .NET Framework và những công cụ kết hợp. Ta có thể tạo
một ứng dụng Silverlight cơ bản sử dụng các ngôn ngữ chức năng như:
IronPython, hay ngôn ngữ gần gũi hơn như: C#, Visual Basic. Ta cũng có thể sử
dụng những công cụ triển khai như Visual Studio để tạo những ứng dụng
Silverlight cơ bản.
- Mạng hỗ trợ. Silverlight được hỗ trợ HTTP qua giao thức TCP. Ta có thể kết nối
những dịch vụ: WCF, SOAP, hoặc ASP.NET AJAX và thu nhận dữ liệu XML,
JSON, hoặc RSS.
4. Chạy Silverlight cơ bản.
- Ứng dụng Silverlight cơ bản chạy trên các trình duyệt. Những ứng dụng được tạo
ra trong Silverlight chắc chắn sẽ chạy được trên các trình duyệt mà không cần phải
thêm một đoạn mã (Code) mới nào. Để chạy được những ứng dụng Silverlight cơ bản
này, người dùng (User) cần đến 1 trình nhúng (Plug-in) nhỏ vào trong trình duyệt.
Plug-in này hoàn toàn miễn phí. Nếu người dùng chưa cài đặt Plug-in, chúng sẽ tự
động nhắc người dùng cài đặt vào. Việc tải về và cài đặt chỉ trong vòng vài giây và
phụ thuộc vào việc mong muốn hay loại bỏ việc cài đặt phía người dùng.
5. Tạo một ứng dụng Silverlight cơ bản.
Chúng ta có thể tạo một ứng dụng Silverlight cơ bản sử dụng bất kỳ .NET
Framework nào với sự hỗ trợ của ngôn ngữ (bao gồm Visual Basic, C#, và JavaScript).
Visual Studio 2008 và Expression Blend cung cấp và hỗ trợ cho sự phát triển ứng dụng
Silverlight. Chúng ta cũng có thể tạo một trang Web mà sử dụng cả hai phần tử WPF và
HTML với Silverlight. Cũng giống như HTML, XAML cũng cho phép ta tạo ra những UI
cho những nền ứng dụng Web với những cú pháp đã khai báo. Nhưng có sự khác biệt là
XAML cung cấp nhiều phần tử mạnh mẽ hơ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 6
Nguyễn Anh Việt
Lưu Xuân Việt
II. BẢN ĐỒ SILVERLIGHT
Chủ đề này cung cấp một cái nhìn tổng thể về những nét đặc trưng chính trong việc
phát triển ứng dụng cơ bản Silverlight. Nó bao gồm những bước phổ biến để tạo một ứng
dụng cơ bản Silverlight với những đoạn code ví dụ giúp bạn trong những bước đầu viết
code.
Chủ đề này bao gồm những phần sau:
• Prerequisites
• Integrating Silverlight into Applications
• XAML
• Layout
• Controls
• Adding Code Logic
• Dynamic Languages
• Graphics
• Media and Animation
• Data
• Networking
• Related Topics
1. Yêu cầu cơ bản (Prerequisites)
Bạn có thể chạy tất cả các ví dụ có trong chủ đề này mà không cần cài đặt thêm bất
cứ cái gì ngoại trừ trình thực thi Silverlight 2. Bên cạnh đó, nếu bạn muốn thêm vào hay
sửa đổi ví dụ, bạn sẽ cần phải thêm những công cụ Silverlight và làm việc với một đề án
(project) Silverlight.
Chủ đề này sử dụng ứng dụng API cho Silverlight. Bạn cũng cần phải trình bày
ứng dụng nền Silverlight sử dụng JavaScript API cho Silverlight.
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 7
Nguyễn Anh Việt
Lưu Xuân Việt
2. Hòa nhập Silverlight bên trong những ứng dụng (Integrating Silverlight into
Applications)
Một ứng dụng nền Silverlight là nó chứa đựng những gì đã được tải lên bởi trình
nhúng Silverlight (Silverlight plug-in) lên trên một trang HTML. Trình nhúng Silverlight
có thể lấp đầy trang HTML hoặc chỉ một phần trống nào đó. Mặc định, một đề án Visual
Studio cho phép trình nhúng chiếm 100% chiều dài và chiều rộng một trang.
Nếu bạn muốn chỉ 1 phần ứng dụng sử dụng Silverlight, bạn có thể gọi chúng
trong trang HTML từ đoạn mã Silverlight và ngược lại.
3. XAML
XAML là một ngôn ngữ dựa trên XML, ngôn ngữ này cho phép bạn có thể xây
dựng giao diện của các ứng dụng rất dễ dàng và nhanh chóng, bạn chỉ cần khai báo các
thành phần có trên giao diện của ứng dụng cùng với các thuộc tính của nó, khi chạy
chương trình sẽ hiển thị giống như bạn đã khai báo. Điều này cho phép tách bạch được
giữa việc thiết kế giao diện và việc hiện thực hóa các tính năng.
XAML có trong Silverlight là một tập con của XAML trên .NET 3.0, trong đó đã
bị hạn chế một số tính năng như đồ họa 3D nhằm giữ tính tương thích trên nhiều nền tảng
và trình duyệt khác nhau.
Bạn có thể tạo tất cả các UI của mình trong XAML, hoặc bạn có thể sử dụng
Microsoft Expression Blend để xây dựng các UI trong ứng dụng của mình. Expression
Blend là một bộ công cụ thiết kế với giao diện thiết kế WYSIWYG để tạo nên những
trình ứng dụng nền Silverlight. Expression Blend sinh ra một file XAML mà bạn có thể
dùng để soạn thảo trực tiếp. Bạn cũng có thể móc nối những sự kiện và viết code-behind
với Expression Blend.
4. Layout
Khi tạo một ứng dụng nền Silverlight, điều đầu tiên bạn cần phải làm là xác định
việc bố trí giao diện (UI) như thế nào. Silverlight cung cấp 3 loại panel bố trí để bạn 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 8
Nguyễn Anh Việt
Lưu Xuân Việt
thể sử dụng. Trong 3 loại đó, panel Grid có tính chất mềm dẻo và mạnh mẽ nhất, do đó
giá trị mặc định ban đầu là Grid
Container Mô tả
Canvas Vị trí tuyệt đối của những phần tử con trong không gian x,y.
StackPanel
Vị trí tương đối của 1 phần tử con với một phần tử khác theo chiều
ngang hoặc chiều dọc.
Grid Vị trí của những phần tử con trong hàng và cột.
Trong ví dụ dưới đây, một phần tử hình chữ nhật là chỗ ô 1,1 của 1 Grid. Grid sử dụng
chỉ mục bắt đầu là 0, vì vậy hình chữ nhật xuất hiện ở ô phải-dưới.
XAML
<Rectangle Fill="Red" Width="150" Height="100"
Grid.Column="1" Grid.Row="1"/>
Báo cáo đồ án tốt nghiệp GVHD: TS. NGUYỄN CHÁNH THÀNH
Hình 1
5. Control
Control trong Silverlight cho phép bạn đưa ra những chỉ mục chính, hoặc những
control khác và bạn có thể thiết kế thay đổi trạng thái cách hiển thị đến người dùng.
Những loại Control trong hàm xử lý từ những phần tử mà cho phép người dùng tương tác
như Button hoặc TextBox tới những phần tử bố trí những thông tin phức tạp hơn như
DataGrid.
Xuyên suốt Silverlight với những ví dụ mẫu mặc định cho mỗi loại Control và thấy
được cách dùng những Control như thế nào. Tuy nhiên, bạn cũng có thể tạo nên những
mẫu riêng thay đổi sự xuất hiện và cách cách xử lí nhìn trực quan hơn đối với tất cả các
Control.
Tiếp theo ví dụ ở trên, Chúng ta thêm một Button vào ô 0,0 của Grid.
XAML
SVTH: Thân Hoàng Lộc Trang 9
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
<Button Height="25" Width="100" Grid.Column="0"
Grid.Row="0"/>
<Rectangle Fill="Red" Width="150" Height="100"
Grid.Column="1" Grid.Row="1"/>
Hình 2
SVTH: Thân Hoàng Lộc Trang 10
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 11
Nguyễn Anh Việt
Lưu Xuân Việt
6. Thêm những Code Logic (Adding Code Logic)
Mặc định, trong một đề án Visual Studio gồm có một tập tin mã (code file), đôi khi
sẽ gọi một tập tin code behind. Tập tin code thuần một ngôn ngữ và được Silverlight hỗ
trợ (Support) trong suốt quá trình thực thi (CLR – Common Language Runtime) ví dụ
như: C# hoặc Visual Basic.
Tên của tập tin Code-Behind là Page.xaml và nó gắn liền với loại ngôn ngữ đã được chọn
(Trong ví dụ này là Page.xaml.cs). Tập tin Code-Behind là nơi mà chúng ta có thể thay
đổi cấu trúc logic những đối tượng trong XAML. Chúng ta có thể tạo những đối tượng UI
trong đoạn code và thêm chúng lên cây hiển thị các phần tử. Trong việc thêm vào này,
chúng tạo nên những lớp bên trong tập tin code-behind (Hoặc bất kỳ tập tin code nào
trong đề án) có thể truy xuất được trong XAML.
Trong ví dụ sau chúng ta thêm vào một sự kiện Click nhằm thay đổi màu của hình chữ
nhật thành màu xanh.
Trong XAML, thêm một sự kiện click vào Button và thuộc tính x:Name vào Rectangle.
X:Name cho phép chúng tham chiếu vào trong Rectangle trong tập tin Code-Behind:
XAML:
<Button Height="25" Width="100" Grid.Column="0" Grid.Row="0"
Click="Button_Click"/>
<Rectangle x:Name="rect1" Fill="Red" Width="150"
Height="100" Grid.Column="1" Grid.Row="1"/>
Trong file Code-Behind, khai báo quản lý sự kiện click (Click event Handler):
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 12
Nguyễn Anh Việt
Lưu Xuân Việt
C#:
private void Button_Click(object sender, RoutedEventArgs e)
{
rect1.Fill = new SolidColorBrush(Colors.Blue);
}
7. Ngôn ngữ chức năng (Dynamic Languages)
Những công cụ trong Visual Studio cho Silverlight bao gồm ngôn ngữ thực thi
chức năng (Dynamic Language Runtime - DLR) cho phép người dùng sử dụng các ngôn
ngữ chức năng như Python và Ruby để viết ứng dụng nền Silverlight. Ngôn ngữ chức
năng là những gói mã nguồn ( Source code) không biên dịch trong quá trình lắp, nối
(assemblies) và mã (code) của chúng có thể được sinh ra và biên dịch trong quá trình thực
thi. Chúng tương thích tốt và mền dẻo trong quá trình tương tác trình bày. Silverlight bao
gồm 3 ngôn ngữ chức năng: IronPython, IronRuby, and Managed Jscript.
8. Đồ họa (Graphics)
Silverlight cung cấp nhiều tùy chọn trong việc thêm vào những tính năng trực quan
trong ứng dụng của bạn. Bạn có thể sử dụng thuật vẽ (Drawing), khuôn hình (Shapes),
đường vẽ (paths) và những hình học phức tạp. Khu vực khai báo hình học có thể được lấp
đầy bởi nhiều hiệu ứng như: hình ảnh, độ nghiêng màu hoặc những Video clip.
Bạn cũng có thể thêm vào hình ảnh hoặc hiệu ứng hình ảnh trong ứng dụng.
Silverlight cũng tính đến cách nhìn theo chiều sâu (Deep Zoom) cho phép bạn dễ dàng
nhìn thấy và quét góc nhìn chi tiết những hình ảnh.
Ví dụ đầy đủ về hình chữ nhật với những bút kẻ nghiêng (linear gradient brush):
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 13
Nguyễn Anh Việt
Lưu Xuân Việt
XAML:
<Rectangle x:Name="rect1" Width="150" Height="100"
Grid.Column="1" Grid.Row="1">
9. Media và Animation (Media and Animation)
Ngoài việc thêm vào những hình tĩnh, bạn có thể thêm vào những ảnh động, âm
thanh (audio) và video nhằm tạo nên nhiều tính năng và sự tương tác cho ứng dụng.
Tiếp theo ví dụ tạo hình chữ nhật ở ví dụ trước. Chúng sẽ tự phóng to và thu nhỏ
cho tới khi nhấp vào button Stop.
XAML:
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 14
Nguyễn Anh Việt
Lưu Xuân Việt
<DoubleAnimation Storyboard.TargetName="rect1"
Storyboard.TargetProperty="Height"
From="0" To="100"
AutoReverse="True" Duration="0:0:02"
RepeatBehavior="Forever"/>
<DoubleAnimation Storyboard.TargetName="rect1"
Storyboard.TargetProperty="Width"
From="0" To="100"
AutoReverse="True" Duration="0:0:04"
RepeatBehavior="Forever"/>
<Button Height="25" Width="100"
Grid.Column="0" Grid.Row="0"
Content="Stop"
Click="Button_Click"/>
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 15
Nguyễn Anh Việt
Lưu Xuân Việt
<Rectangle x:Name="rect1" Width="150" Height="100"
Grid.Column="1" Grid.Row="1" Loaded="OnLoaded">
<GradientStop Offset="1.0"
Color="Lavender"/>
<Button Height="25" Width="100"
Grid.Column="0" Grid.Row="1"
Content="Start"
Click="Button_Click_1"/>
C#
private void OnLoaded(object sender, RoutedEventArgs e)
{
AnimateRectangle.Begin();
}
private void Button_Click(object sender, RoutedEventArgs e)
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 16
Nguyễn Anh Việt
Lưu Xuân Việt
{
AnimateRectangle.Pause();
}
private void Button_Click_1(object sender, RoutedEventArgs
e)
{
AnimateRectangle.Resume();
}
10. Dữ liệu (Data)
Rất nhiều ứng dụng nền Silverlight làm việc với dữ liệu. Bạn có thể hiển thị bộ dữ
liệu với những Control như DataGrid và ListBox. Trong một UI, bạn có thể sử dụng Data
Binding. Nếu đối tượng data có kết nối với UI, nó sẽ tự động cập nhật và truyền tới UI.
Dữ liệu có thể mang vào trong ứng dụng từ những nguồn (Source) cung cấp dồi
dào. Chẳng hạn như nguồn cung cấp RSS, nhưng thường định dạng theo kiểu XML.
Silverlight bao gồm XmlReader và LINQ dùng cho việc phân tách dữ liệu XML. LINQ
thích hợp cho việc phân tách những phần dữ liệu nhỏ.
11. Hệ thống mạng (Networking)
Silverlight cung cấp vài nét đặc trưng trong sự kết nối truyền thông . Lớp
WebClient điều khiển sự truyền tải nội dung tới máy trạm (Client). Bạn cũng có thể sử
dụng lớp WebClient để gởi và nhận một thông điệp XML đơn giản. Ứng dụng nề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 17
Nguyễn Anh Việt
Lưu Xuân Việt
Silverlight cũng có thể truy xuất Web Service như là WCF (Windows Communication
Foundation), SOAP, và ASP.NET AJAX
III. KIẾN TRÚC SILVERLIGHT (Silverlight Architecture)
Silverlight không chỉ là một bức tranh đa dạng quyến rũ, tương tác với Web và
chứa đựng Media đến với người dùng cuối (end user). Mà sức mạnh của nó là yêu cầu
nền tảng phát triển nhẹ nên tính linh động cao, nền tảng đa nhiệm, ứng dụng mạng tích
hợp nhiều dữ liệu và dịch vụ từ nhiều nguồn khác nhau. Hơn nữa, Silverlight cho phép
bạn xây dựng những giao diện người dùng với sự thay đổi đáng kể những nét đặc trưng
bởi kinh nghiệm từng trải của người dùng cuối so sánh được với những ứng dụng Web
truyền thống.
Trong khi Silverlight đóng vai trò như là một ứng dụng khách bên cạnh môi trường
thực thi đơn và gói gọn trong 1 kích cỡ nào đó. Và nền tảng phát triển Silverlight hòa
nhập với một số nét đặc trưng tiêu biểu với kỹ thuật phức tạp, chúng tạo nên sự gần gũi
với người lập trình. Để tạo một ứng dụng nền Silverlight hiệu quả, người lập trình cần
phải làm việc và am hiểu kiến trúc nền vững chắc.
Chú ý:
Phiên bản Silverlight 2 hỗ trợ 2 kiểu lập trình: JavaScript API đối với Silverlight
và Quản lý (the Managed) API đối với Silverlight. Quản lý API là một tập con của .NET
FrameWork. Nhiều nét đặc trưng của Silverlight mà chỉ có Managed API mới hỗ trợ
được.
1. Nền tảng Silverlight (The Silverlight Platform) Nền tảng Silverlight gồm có 2 phần
chính: Cài đặt và nâng cấp các thành phần. Được mô tả như bảng sau:
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 18
Nguyễn Anh Việt
Lưu Xuân Việt
Thành phần Mô tả
Các Framework
trình bày chính
Thành phần và dịch vụ định hướng hướng người dùng và UI tương tác
vơi nhau, bao gồm thông tin vào của người dùng, control UI dễ dùng
đối với người sử dụng ứng dụng web, nghe media, quản lý kỹ thuật số,
điều khiển dữ liệu, và đưa ra những nét đặc trưng, gồm định hướng đồ
họa, văn bản, hình động (hoạt ảnh) và hình ảnh. Và cũng bao gồm
phần mở rộng chỉ định những bố cục riêng (sử dụng ngôn ngữ
XAML).
.NET
Framework cho
Silverlight
Một tập hợp con của .NET Framework chứa đựng những thành phần
và thư viện, bao gồm tích hợp dữ liệu control Windows mở rộng, hệ
thống mạng, lớp thư viện cơ bản, tập hợp dữ liệu rác và CLR
(common Language Runtime). Một vài phần của .NET Framework
cho Silverlight là sự triển khai cùng với ứng dụng. Nhiều thư viện
Silverlight (Silverlight Libraries) là sự hợp thành không phải trong lúc
thực thi và trong phần mở rộng của Silverlight SDK. Những thư viện
Silverlight sử dụng sẽ được đóng gói cùng với ứng dụng và được tải
lên trình duyệt. Bao gồm: những Control UI mới, XLINQ, Syndication
(RSS/Atom), XML serialization và DLR (dynamic language runtime)
Cài đặt và cập
nhật (Installer
and updater)
Control một cài đặt và nâng cấp là một tiến trình xử lý đơn của việc
cài đặt ứng dụng lần đầu tiên cho người dùng, và sau đó là hạn chế
việc tác động trực tiếp để chúng tự động cập nhật.
Báo cáo đồ án tốt nghiệp GVHD: TS. NGUYỄN CHÁNH THÀNH
Hình 3. Bảng mô tả các thành phần hợp thành kiến trúc Silverlight, các thành phần quan
hệ và dịch vụ
SVTH: Thân Hoàng Lộc Trang 19
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 20
Nguyễn Anh Việt
Lưu Xuân Việt
Có những giá trị riêng trong việc thiết lập nối kết các công cụ, kỹ thuật, kể cả
những dịch vụ trong nền Silverlight: chúng dễ dàng giúp người lập trình tạo nên sự phong
phú, khả năng tương tác và ứng dụng mạng. Mặc dù dễ dàng thực hiện việc xây dựng
những ứng dụng sử dụng những công cụ và kỹ thuật web hiện nay. Người lập trình vẫn bị
cản trở bởi những kỹ thuật khó. Kể cả sự không tương thích nền tảng lập trình, sự khác
nhau trong phương thức truyền và định dạng tập tin, và sự khác nhau trong những trình
duyệt Web dẫn đến những trang hồi đáp, những tập lệnh truy xuất khác nhau. Một ứng
dụng Web phong phú có thể chạy hoàn toàn tốt trên một hệ thống và trình duyệt nhưng nó
cũng có thể hoạt động không tốt trên một hệ thống và trình duyệt khác, hoặc không chạy
được. Các mảng kỹ thuật, phương thức truyền và công cụ ngày nay rất rộng, nó rất là có
quy mô…
- Có khả năng tạo những ứng dụng tương tự mà người dùng đã từng trải trên những
trình duyệt và nền tảng đa nhiệm. Vì vậy chúng trông bắt mắt hơn và dễ thực thi
hơn ở bất cứ nơi đâu.
- Sự tích hợp dữ liệu và dịch vụ từ nhiều hệ thống mạng vào trong ứng dụng sử dụng
những lớp .NET Framework và các hàm xử lý quen thuộc.
- Media phong phú, thuyết phục và giao diện gần gũi với người dùng (UI).
- Silverlight dễ dàng tạo dựng cho người phát triển xây dựng những ứng dụng. Bởi
vì nó khắc phục nhiều sự không tương thích trong những kỹ thuật hiện hành và
cung cấp bên trong một nền tảng công cụ tạo dựng phong phú, nền tảng đa nhiệm
và những ứng dụng đồng nhấ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 21
Nguyễn Anh Việt
Lưu Xuân Việt
2. Các thành phần bên trong (Core Presentation Components)
Tính năng Miêu tả
Input
Những xử lý được nhập vào từ những thiết bị phần cứng như: bàn phím,
chuột, bút vẽ (drawing) hoặc một thiết bị nhập khác.
UI rendering
Định hướng mô tả và những ảnh đồ họa bitmap, hình động (animations) và
văn bản (text).
Media
Phát lại với nét đặc trưng và cách quản lý các tập tin audio và video khác
nhau, chẳng hạn như những tập tin với phần mở rộng: .WMP và .MP3.
Controls
Hỗ trợ những control mở rộng mà có thể tùy biến tạo mẫu xuyên xuốt ứng
dụng.
Layout Cho phép bố trí các chứng năng của các thành phần UI.
Data binding Cho phép nối kết những đối tượng và thành phần UI.
DRM Cho phép quản lý số hóa các tài nguyên media.
XAML Cung cấp một sự phân chia và đánh dấu cho XAML.
Bảng mô tả các thành phần bên trong tiêu biểu của nền tảng Silverlight thể hiện trên hình 3
Người phát triển cũng tương tác với Framework thể hiện này bởi sử dụng XAML
chỉ định rõ những chi tiết trình bày. XAML là điểm chính của sự tương tác giữa .NET
Framework và các lớp thể hiện. Người phát triển có thể vận dụng những cách lập trình để
thể hiện các lớp trong cách quản lý code.
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 22
Nguyễn Anh Việt
Lưu Xuân Việt
3. .NET Framework cho Silverlight.
Tính năng Miêu tả
Data
Hỗ trợ ngôn ngữ truy vấn đồng nhất (LINQ) và những tính năng
LINQ với XML, cái mà không bị ràng buộc bởi những tiến trình xử
lý hòa nhập và làm việc với những dữ liệu từ nhiều nguồn khác
nhau. Và cũng hỗ trợ sử dụng XML và những lớp sắp xếp trình bày
dữ liệu.
Base class library
(BCL)
Một bộ thư viện .NET Frameword cung cấp những hàm lập trình cần
thiết như: xử lý một chuỗi ký tự (string handling), biểu thức thông
thường, nhập và xuất, ánh xạ, tập hợp và toàn cầu hóa.
Window
Communication
Foundation (WCF)
Cung cấp tính năng đơn giản truy cập dữ liệu và dịch vụ từ xa. Bao
gồm một đối tượng trình duyệt, yêu cầu HTTP và đối tượng trả lời,
hỗ trợ những lĩnh vực giao nhau yêu cầu HTTP, hỗ trợ RSS/Atom
syndication feeds, và hỗ trợ JSON, POX, và những dịch vụ SOAP.
CLR (common
language runtime)
Cung cấp sự quản lý bộ nhớ, dữ liệu rác, kiểm tra tình trang an toàn
và những xử lý ngoại lệ.
WPF (Windows
Presentation
Foundation)
controls
Cung cấp những control phong phú như: Button, Calendar,
CheckBox, DataGrid, DatePicker, HyperlinkButton, ListBox,
RadioButton, và ScrollViewer.
DLR (dynamic
language runtime)
Hỗ trợ biên dịch những chức năng và thi hành những ngôn ngữ kịch
bản như JavaScript và IronPython trong những chương trình ứ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 23
Nguyễn Anh Việt
Lưu Xuân Việt
dụng nền Silverlight. Bao gồm những mẫu gắn kết trong việc thêm
vào, hỗ trợ sử dụng những ngôn ngữ khác với Silverlight.
Bảng mô tả danh sách từng phần của .NET Framework với những nét đặc trưng thể hiện
trên hình 3.
Bộ .NET Framework cho Silverlight là một tập hợp con của bộ .NET Framework
đầy đủ. Nó cung cấp những cái mạnh mẽ cần thiết, định hướng đối tượng ứng dụng phát
triển cho những loại ứng dụng (như ứng dụng Internet) mà không tuân theo những hỗ trợ
sẵn có truyền thống.
Người phát triển có thể tương tác với những lớp .NET Framework của Silverlight
bằng cách viết những mã (code) quản lý sử dụng ngôn ngữ C# hoặc Visual Basic. Người
phát triển .NET Framework cũng có thể truy xuất những lớp thể hiện thông qua Visual
Studio 2008 hoặc Microsoft Expression Blend.
Việc thêm vào chương trình Silverlight những tính năng giúp cho người phát triển
tạo được sự đa dạng và phong phú cho ứng dụng. Bao gồm những tính năng mô tả trong
bảng sau:
Tính năng Miêu tả
Isolated storage
Cung cấp sự truy xuất an toàn từ máy trạm (Client) Silverlight tới
những tập tin cục bộ hệ thống. Cho phép lưu giữ cục bộ và tạm thời
những dữ liệu riêng của người dùng.
Asynchronous
programming
Một nền của người làm việc với những chuỗi chứa đựng những yêu
cầu lập trình bên ngoài trong khi ứng dụng không ràng buộc người 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 24
Nguyễn Anh Việt
Lưu Xuân Việt
dụng tương tác.
File
management
Cung cấp sự an toàn trong hộp thoại mở tập tin (file), không ràng buộc
quá trình tạo những tập tin upload an toàn.
HTML–
managed code
interaction
Cho phép người lập trình .NET Framework trực tiếp thao tác trên phần
tử UI trong HTML DOM của trang Web. Người lập trình Web cũng có
thể sử dụng JavaScript để gọi trực tiếp những code quản lý bên trong
và truy xuất đối tượng scriptable, thuộc tính (properties), Sự kiện
(events), và phương thức (methods).
Serialization Cung cấp sự hỗ trợ đa dạng của kiểu CLR với JSON và XML.
Packaging
Cung cấp những lớp ứng dụng và xây dựng công cụ tạo những gói
.xap. Những gói .xap chứa đựng ứng dụng và những điểm tiếp nhận
điều khiển (control) việc chạy của Silverlight plug-in.
XML libraries
Những lớp XmlReader và XmlWriter đơn giản hóa việc làm việc với
dữ liệu XML từ những dịch vụ Web (Web services). Tính năng Xlinq
cho phép người lập trình truy vấn dữ liệu trực tiếp bên trong ngôn ngữ
lập trình .NET Framework.
4. Hỗ trợ những hệ điều hành và trình duyệt.
Bởi vì Silverlight là một ứng dụng nền đa nhiệm, chúng chạy trên hầu hết những
trình duyệt Web hiện hành.
Báo cáo đồ án tốt nghiệp GVHD: TS. NGUYỄN CHÁNH THÀNH
Hình 4: Bảng mô tả tính tương thích của hệ điều hành và trình duyệt
(Nguồn )
IV. MÔ HÌNH ỨNG DỤNG VÀ LẬP TRÌNH
Mục tiêu của Silverlight 2 đối với hầu hết các ứng dụng là viết code quản lý sử
dụng những ứng dụng mới nhất trong Silverlight. Bên cạnh đó, bạn có thể sử dụng những
tùy chọn để làm đơn giản hóa thay cho những mẫu lập trình.
Silverlight cung cấp 2 kiểu lập trình riêng biệt trong việc xây dựng những ứng
dụng:
SVTH: Thân Hoàng Lộc Trang 25
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 26
Nguyễn Anh Việt
Lưu Xuân Việt
- Quản lý API với Silverlight. Mục đích nhằm biên dịch và chạy code trên CLR
(common language runtime) hoặc trên DLR (dynamic language runtime) đối với
Silverlight.
- JavaScript với Silverlight. Thể hiện lên trình duyệt sử dụng code JavaScript.
Những mô hình lập trình này hoàn toàn khác biệt bởi vì chúng ta không thể đồng
thời sử dụng cả hai kiểu lập trình trên đối với một trường hợp cụ thể trong một Silverlight
plug-in. Tuy nhiên, bạn cũng có thể thi hành việc trang trí màn hình nền bằng cách sử
dụng một đoạn code JavaScript khi chuyển trạng thái qua managed API trong lúc tải ứng
dụng lên.
The managed API cung cấp nhiều hàm xử lý hơn JavaScript API, và đây là một
điểm nổi bật của Silverlight. Những ứng dụng sử dụng managed API truy xuất tới những
phiên bản .NET Framework nhẹ hơn. Còn đối với JavaScript API chỉ truy xuất và thể hiện
nội dung của Silverlight và những đoạn JavaScript nhúng vào trình duyệt.
1. Lập trình quản lý và mô hình ứng dụng (Managed Programming and the
Application Model)
Managed API cho phép bạn gói những trình điều khiển và những tập tin tài nguyên
vào trong một gói tập tin ứng dụng (.xap). Silverlight plug-in có nhiệm vụ tải những gói
ứng dụng này lên và rút trích nội dung bên trong.
Một gói ứng dụng chỉ chứa một nhóm hành động với những lớp đã được khai báo
trên ứng dụng. Lớp ứng dụng gói gọn sự tương tác giữa ứng dụng và Silverlight plug-in.
Chẳng hạn như, nó cho phép bạn trình bày một giao diện người dùng tương tác với trang
web chủ. Thêm vào đó, nó cung cấp những event của ứng dụng thường trực và quản lý tài
nguyê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 27
Nguyễn Anh Việt
Lưu Xuân Việt
Điểm mạnh của Silverlight là sử dụng những mô hình ứng dụng giới hạn đề cập tới
những gói ứng dụng và những hàm đã được đóng gói bởi những lớp Application. Mô hình
ứng dụng giúp chúng ta trình bày được cả những ứng dụng đơn giản và phức tạp. Có thể
mở rộng ứng dụng này bằng cách chia sẻ những tài nguyên trên mạng.
A. Managed API for Silverlight
Bạn có thể sử dụng ngôn ngữ đánh dấu XAML gói gọn những giao diện người
dùng đã thiết kế vào trong managed API và JavaScript API. Với managed API, bạn có thể
đưa thừa số code ứng dụng vào nhiều tập tin (File) và cung cấp thêm code-behind kèm
theo.
Khi Silverlight plug-in tải những những tập tin XAML lên, nó sẽ tạo ra một cây
đối tượng mà những mã bên trong (code-Behind) có thể thao tác. Những mã quản lý ứng
dụng cũng có thể được thao tác bởi HTML DOM (Document Object Model) thông qua
cầu nối HTML.
Silverlight API định nghĩa việc thiết lập đối tượng y như là một cây đối tượng mà
cho phép bạn chứa đựng nội dung khởi tạo ban đầu của ứng dụng nền Silverlight được tải
lên bởi XAML, và điều chỉnh cây đối tượng này trong thời gian thực thi. Bên trong
managed API, sự tương tác với cây đối tượng Silverlight là định nghĩa với managed code.
Sử dụng CLR, managed code là sự biên dịch vào bên trong assembly. Assembly tiêu biểu
cũng chứa đựng XAML cho ứng dụng nền Silverlight. Managed code có thể Support cho
mô hình ứng dụng Silverlight, và có thể gọi hồi đáp của đối tượng trong suốt thời gian
sống của những event, hoặc là những event khởi tạo user. Bạn cũng có thể sử dụng
managed code để viết những lớp hỗ trợ, định nghĩa những đối tượng data, và cho nhiều
những kịch bản ứng dụng khác. Bạn cũng có thể sử dụng DLR nhiều hơn CLR, vấn đề
này đang được tranh luận trong Dynamic Languages in Silverlight 2.
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 28
Nguyễn Anh Việt
Lưu Xuân Việt
¾ Đặc điểm của Managed API (Characteristics of the Managed API)
a. Managed Code là sự mở rộng
Trong Silverlight 1.0 trước đây, và bên dưới JavaScript API hiện tại (độc lập với
version client) không hỗ trợ cho việc khai báo hạn chế một tùy chọn phần tử UI. Bạn có
thể kết hợp một phần tử và khi tải chúng mất nhiều thời gian từ khai báo tương tự của
XAML, và gán những hàm tương tự như code hỗ trợ. Nhưng điều này gần như không hỗ
trợ cho việc co giãn, phóng to kích thước. Sử dụng Managed API, tính co dãn hoàn toàn
là một vấn đề xuất phát từ những lớp hoặc control hiện hành được hỗ trợ một cách hữu
ích trong những hàm xử lý cơ bản. Và cũng có thể khai báo bằng một số phần tử hỗ trợ
như: tạo mới một control template, cập nhật những lớp event handle…v…v…Mở rộng
việc quản lý code cũng là khái niệm cơ bản của việc quản lý và lập trình .NET
Framework và đây cũng không phải là một vấn đề đơn giản trong Silverlight.
b. Cây đối tượng (Object Trees)
Cây đối tượng là khái niệm tồn tại trong JavaScript API, và sự vận dụng cây vào
trong mô hình này cũng có giới hạn bởi vì nó không có một đối tượng kỹ thuật khởi tạo.
Trong quản lý API, bạn có thể gọi hàm khởi tạo bên trong những lớp và có thể thêm vào
cây mà không cần sử dụng phân tích XAML làm trung gian. Thật ra, bạn có thể xây dựng
một cây thật quy mô hoàn toàn trong khai báo code bằng cách gọi sự khởi tạo liên tục và
thêm những đối tượng vào cây đối tượng bắt đầu từ root và xuyên suốt trong các thuộc
tính con (Children).
Bạn có thể tham chiếu các đối tượng trong cây đối tượng suốt thời gian thực thi
của Silverlight bằng cách quản lý code hoặc JavaScript.
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 29
Nguyễn Anh Việt
Lưu Xuân Việt
c. Quản lý code-behind và các lớp cục bộ (Managed Code-Behind and Partial
Classes)
Kỹ thuật chính trong việc khai báo một UI trong Silverlight là việc định nghĩa các
phần tử trong việc tạo XAML. Điều này gồm cả việc sử dụng những Style và Template,
chúng cũng được khai báo bên trong việc tao XAML. Trong nhiều trường hợp bạn sẽ
muốn đưa những đối số khác nhau vào trong những file XAML mà được tích hợp trong
những mô hình ứng dụng Silverlight. Để định nghĩa một tương tác cần thiết trong ứng
dụng, bạn thường muốn định nghĩa event handler mà đáp lại tới đối tượng trong suốt thời
gian event sống hoặc event khởi tạo user cho những đối tượng được khai báo trong
XAML. Trong quản lý API, mỗi trang XAML là nơi chứa đựng những event handling
hoặc nội dung của những phần tử root. Chúng chỉ được đưa vào quá trình thực thi như là
một phần tất yếu của quá trình xây dựng. Sự đưa vào quá trình thực thi này cung cấp
những móc nối cần thiết trong suốt thời gian chạy tương tác với cây đối tượng được tạo ra
khi trang XAML tải lên. Những móc-nối này bao gồm những event handler tốt nhất tham
chiếu tới bất kỳ đối tượng nào được đặt Name hoặc x:Name trong XAML. Trong cấu trúc
Silverlight, XAML không biên dịch hết nội dung bên trong nó. Nhiều cây đối tượng được
tạo ra trong XAML cho UI bị trì hoãn lại cho tới khi trang XAML thực sự được tải lên hết
trong ứng dụng đang chạy và được xử lý bằng những đoạn XAML Silverlight.
Code-Behind là một thuật ngữ sử dụng miêu tả code tham gia vào một lớp thành
phần với trang XAML khi tạo dựng hoặc biên dịch ứng dụng.
d. Chuẩn hóa tương tác DOM (Formalized DOM Interaction)
Trong JavaScript API, tham chiếu đối tượng hoặc biến trong HTML DOM từ
Silverlight nguyên bản hoặc ngược lại không có liên quan gì bởi vì chính nó đã có thể
trình bày được bởi sự tồn tại của nó trong trình duyệt hoặc trong một phạm vi nào đó.
Trong code quản lý API, một phân đoạn định dạng đã tồn tại bởi vì code quản lý sử dụ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 30
Nguyễn Anh Việt
Lưu Xuân Việt
thư viện trong Silverlight và chính CLR chứ không phải là trình duyệt. Sự tương tác với
DOM từ quản lý API, bạn có thể sử dụng một chuỗi những đặc trưng mà đôi khi những
tập chuỗi này được tham chiếu như là một cầu nối HTML, hoặc cầu nối HTML DOM.
Bao gồm những phần sau:
• APIs đưa ra những nhiệm vụ xử dụng DOM phổ biến (trong những trường hợp, tài
liệu đối tượng) để code quản lý.
• Điều kiện dễ dàng có thể tạo những kiểu quản lý chính từ DOM.
• Kỹ thuật chuyển đổi những kiểu quản lý phát sinh từ những giá trị hoặc đối tượng
chính JavaScript.
• APIs đưa ra những nét đặc trưng của đối tượng Silverlight plug-in trình bày trong
DOM.
B. JavaScript API for Silverlight
JavaScript API là một mô hình đã được tích hợp sẵn trong bản Silverlight 1.0, và
nó vẫn giữ được tính tương thích cũng như chạy những kịch bản ngoại lệ.
Trong JavaScript API, Silverlight plug-in tải lên một trang XAML đơn thay vì một
gói ứng dụng. Trang XAML có thể bao gồm URL tham vấn tới một tài nguyên bên ngoài
máy chủ (Server), như là hình ảnh và Video. Silverlight plug-in sử dụng XAML để tạo
nên một cây đối tượng mà chúng ta có thể vận dụng nhiều cách lập trình sử dụng
JavaScript trong tranh HTML chính.
JavaScript không cung cấp một mô hình ứng dụng riêng nhưng nó hỗ trợ với sự
điều hướng trong nội dung ứng dụng để giải quyết những vấn đề phức tạp. Bên cạnh đó,
nó cũng có thể giải quyết những kịch bản “cồng kềnh” như trong managed API ví dụ như
trang trí màn hình nền (splash screens). Bạn cũng có thể tải lên những trang XAML mới
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 31
Nguyễn Anh Việt
Lưu Xuân Việt
trong Silverlight plug-in hoặc những trang web mới trong trình duyệt và định hướng thực
thi ban đầu cho chúng.
Trong một vài trường hợp, JavaScript API với Silverlight phụ thuộc vào nhau nhiều hơn
so với Code quản lý.
1. Cân nhắc kiểu lập trình (Programming Model Considerations)
JavaScript API với Silverlight là kiểu lập trình mà đã được tích hợp sẵn trong
phiên bản 1.0 của Silverlight. Nó sử dụng những tập con nhỏ của đối tượng mà sẵn sàng
dùng được trong Silverlight 2, cộng với một số đối tượng riêng biệt trong JavaScript API.
Tập con này cũng cân nhắc sự ảnh hưởng với những đối tượng mà bạn khai báo
trong XAML. Phân tách XAML của Silverlight chỉ tạo nên đối tượng bên trong cây đối
tượng của những tập con này. Bởi vì cây đối tượng được tạo nên trên nền code cố định thi
hành những cái bên dưới JavaScript. Nói cách khác, tập con và sự cân nhắc giới hạn mà
áp dụng với JavaScript API cho Silverlight là sự có thật nhiều hơn ngôn ngữ mà bạn lựa
chọn để viết cho chuỗi lý luận bên trong code-behind; Lựa chọn lập trình kiểu API cho
phép bạn xác định rõ những đối tượng nào sẵn dùng trong ứng dụng.
Nếu bạn đã phát triển trong Silverlight 1.0, chắc chắn bạn đã quen thuộc với
JavaScript API trong Silverlight. Lập trình JavaScript API tương tự như trong HTML
DOM, và thực ra là sự thi hành những kịch bản nhúng trong trình duyệt giống như là kịch
bản trong DOM. Nhưng mô hình Silverlight mở rộng trong cây đối tượng mà được tạo
nên khi một trang XAML tải lên những nội dung co Silverlight plug-in. Điều này cho
phép bạn xử lý những event trên đối tượng tiêu biểu mà bạn đã định nghĩa trong XAML.
Get hoặc set giá trị thuộc tính hoặc thi hành những phương thức đối tượng trong thời gian
chạy, chỉnh sửa cấu trúc của XAML, tạo cây đối tượng trong thời gian chạy và…v.v…
Trong điều kiện của cấu trúc, JavaScript API cho phép một hướng mở trong cây
đối tượng Silverlight trên Silverlight plug-in, bao bọc những kịch bản được triệu gọi, và
kết thúc chúng trong plug-in như những đối tượng tự nhiên. Trong Internet Explorer việ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 32
Nguyễn Anh Việt
Lưu Xuân Việt
bao bọc được thực hiện khi gọi IDispatch::Invoke. Còn trong những trình duyệt khác có
khả năng sử dụng những kiểu bao bọc khác phụ thuộc vào những plug-in và cấu trúc kịch
bản.
2. Kịch bản cho khai báo JavaScript API (Scenarios for Using the JavaScript API)
¾ Splash Screens
Một Splash Screens là nội dung một khu vực khởi tạo để trình bày tới user trong khi
những nội dung khác vẫn tiếp tục đang tải lên. Bên trong điều kiện thiết kế và mục đích,
một Splash Screens đã ngầm quan hệ với UI và những yêu cầu tương tác. Mục đích chính
của Splash Screens là:
• Thể hiện tính trực quan thú vị.
• Cung cấp thông tin phản hồi tới user mà ứng dụng (hoặc brower host) vẫn còn
những hàm xử lý như mong đợi và tải chúng về như là sự phát triển.
• Giữ những thông tin đặc trưng trong tiến trình tải về.
Hai hàm đầu tiên có đủ tính năng thường thấy trong XAML mà không cần code-
behind bên trong. Miễn là tiến trình tải về yêu cầu thu được những thông tin tối thiểu của
một API từ lớp mạng mà nó thực hiện việc tải về. Có những lý do một Splash Screens là
phương tiện tốt nhất bởi sự khai báo JavaScript API và truyền tải một trang XAML (Được
hỗ trợ bởi Script code Behind) cho SplashScreenSource. JavaScript API có thể tải về
Splash Screen mà không cần tác động tới Silverlight CLR và liên quan tới assemblies để
rút ngắn thời gian khởi động.
3. Phiên bản JavaScript mới cho Silverlight 2 (New JavaScript API for Silverlight
Version 2)
Silverlight 2 cung cấp việc thêm vào những đối tượng có thể sử dụng trong JavaScript
API khác với việc thiết lập những đối tượng trong Silverlight 1.0. Nó hoàn toàn cho phép
bởi vì những đối tượng này có sự thi hành tự nhiên mà nó trình bày tương tự như việ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 33
Nguyễn Anh Việt
Lưu Xuân Việt
khởi tạo một đối tượng trong bản 1.0. Bạn có thể tạo những đối tượng này trong bên trong
XAML và sau đó script đến cây đối tượng. Để sử dụng những đối tượng này, client chạy
những ứng dụng nền Silverlight nên có bản chạy Silverlight version 2 client.
Việc thêm vào những đối tượng với JavaScript API là bao gồm bên trong những tư
liệu Silverlight cho JavaScript (Như thuộc tính-Properties, phương thức-Method, event,
và bảng liệt kê- enumerations). Đây là những tài liệu cấp cơ bản. Đối tượng mới và thành
viên mới cần chú ý tới những thông tin của phiên bản tham khảo trong trang chủ.
4. Những kỹ thuật riêng của JavaScript API (Technical Specifics of the JavaScript
API)
Có một vài kỹ thuật riêng trong JavaScript API khác với việc quản lý API và sự mở
rộng sang nhiều những phần tử JavaScript API
- JavaScript và các trường hợp nhạy cảm (JavaScript and Case Sensitivity)
Các đối tượng, phương thức và tên thuộc tính trong JavaScript là không được xem xét
như là trường hợp nhạy cảm khi được xử lý bởi Idispatch hoặc kỹ thuật song song mà là
bên ngoài Silverlight JavaScript API tới tập lệnh nhúng vào trong Brower Hosting. Vì
vậy, bạn có thể dùng chữ hoa để khởi tạo trong giá trị thuộc tính event XAML và chữ
thường trong những phương thức được định nghĩa hiện tại nếu bạn thích. Tuy nhiên, tài
liệu cú pháp Silverlight và những tiêu đề trong những text mô tả chung phải chuẩn hóa
những trường hợp cho đối tượng-object, thuộc tính-properties, phương thức-method,
events, bảng liệt kê- enumerations, và các giá trị liệt kê ban đầu sử dụng chữ hoa tốt hơn
là sử dụng chữ hoa bên trong. Có hai lý do:
• XAML rất nhạy cảm trong việc phân biệt chữ, bởi vì nó theo chuẩn XML. Cú
pháp XAML và những tập lệnh tương đương thường có mặt trong một trang
đơn. Vì vậy, nó cần một chuẩn hóa trong XAML. Titling mà bạn thấy trong tài
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 34
Nguyễn Anh Việt
Lưu Xuân Việt
liệu Silverlight là những biểu mẫu trường hợp chính xác cho một phần tử đối
tượng hoặc thuộc tính XAML.
• Quản lý API xử lý tất cả các trường hợp như là trường hợp nhạy cảm, khai báo
như trong quy ước Pascal. Hiện tại JavaScript tham chiếu trường hợp tương
đương ở mức cao hơn không cần đường dẫn.
C. JavaScript và HTML DOM
JavaScript API và managed API đều cho phép bạn sử dụng JavaScript trong trang
HTML chính tích hợp Silverlight với HTML DOM (Document Object Model).
Trong JavaScript API, bạn chỉ thực thi những hàm ứng dụng sử dụng trong trình
duyệt mà JavaScript đã khai báo. Chúng cũng có thể tương tác trực tiếp với DOM. Trong
managed API, những mã JavaScript và DOM tương tác với Silverlight plug-in và mô hình
ứng dụng sử dụng cầu nối HTML.
1. Cấu trúc ứng dụng (Application Structure)
Khi bạn tạo một ứng dụng nền Silverlight sử dụng managed API, tiến trình xử lý sẽ
sinh ra một gói ứng dụng. Gói ứng dụng được nén lại trong tập tin có phần mở rộng là
.xap và nó chứa đựng những tập tin cần thiết để bắt đầu một ứng dụng.
Khi nhúng Silverlight plug-in vào trang Web, bạn có thể chỉ định rõ những gói ứng
dụng nào mà Plug-in cần tải về. Plug-in sử dụng một tập tin hiển thị trong gói ứng dụng
để nhận dạng những lớp ứng dụng đã được triệu gọi. Những lớp này được biết đến như là
một điểm mục (entry) của ứng dụng và nó chỉ bắt nguồn từ những lớp Application. Đối
với những ứng dụng riêng lẻ, plug-in cũng sẽ triệu gọi những tập xử lý (essemble) căn
bản chi tiết mà nó thừa hưở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 35
Nguyễn Anh Việt
Lưu Xuân Việt
Lớp Application cung cấp một sự kiện bắt đầu (Startup event) để bạn có thể khởi
tạo những handle ban đầu cho ứng dụng và giao diện người dùng. Lớp Application cũng
cung cấp những yêu cầu dịch vụ ứng dụng phổ biến khác. Ví dụ bạn có thể sử dụng lớp
Application để rút trích những tập tin tài nguyên từ những gói ứng dụng hoặc tải về từ
những tập tin zip.
Quá trình tải về (download) một gói ứng dụng và ngay lập tức gọi hệ thống kích
hoạt Silverlight. Hệ thống kích hoạt cho phép bạn chỉ định giá trị nhỏ nhất của gói tải về.
Sau khi kích hoạt, ứng dụng của bạn có thể truy xuất tới những tập xử lý (assemble) đã
thêm vào trong thư viện và những tập tin tài nguyên theo yêu cầu.
2. Gói ứng dụng (Application Package)
Một gói ứng dụng bao gồm những tập tin:
- Một tập tin AppManifest.xaml, nó nhận dạng những bộ xử lý đã đóng gói và điểm
bắt đầu của ứng dụng.
- Một bộ xử lý ứng dụng, bao gồm những lớp ứng dụng.
- Không, hoặc nhiều thư viện những bộ xử lý.
- Không, hay nhiều tập tin tài nguyên không xác định, ví dụ như hình ảnh (image)
hoặc những tập tin Video.
Tập tin AppManifest.xaml là tập tin tự động sinh ra (generate) điển hình trong quá
trình xây dựng và sử dụng ngôn ngữ đánh dấu XAML để trình bày một đối tượng
Deployment với trình ứng dụng.
Trong tập tin AppManifest.xaml, phần tử Deployment bao gồm những thuộc tính:
- Thuộc tính RuntimeVersion nhận dạng phiên bản yêu cầu của Silverlight.
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 36
Nguyễn Anh Việt
Lưu Xuân Việt
- Thuộc tính EntryPointType và EntryPointAssembly nhận dạng mục bắt đầu của
ứng dụng.
Phần tử Deployment cũng bao gồm một phần tử đặc tính con Deployment..::.Parts mà
có một phần tử con AssemblyPart riêng cho mỗi assembly trong một gói ứng dụng.
Gói ứng dụng chỉ bao gồm một tập tin AppManifest.xaml và một entry-point của
assembly ứng dụng. Bạn cũng có thể triển khai tất cả các thành phần ứng dụng khác trong
file đóng gói (in-package) hoặc trong file yêu cầu (on-demand).
Trong file đóng gói là những file được chứa đựng bên trong gói ứng dụng. Điển hình
là những file tối thiểu để bắt đầu ứng dụng hoặc triệu gọi những file sẵn sàng dùng đến
sau khi khởi động. Bạn cũng có thể chia sẻ những nguồn tài nguyên như hình ảnh nhúng
trực tiếp vào trong assembly hoặc những file riêng biệt trong phạm vi của gói ứng dụng.
Những file yêu cầu là những file mà bạn triển khai trên máy chủ (Server). Chẳng hạn
như vị trí của các gói ứng dụng. Ứng dụng của bạn có thể truy xuất những file này sau khi
chúng được kích hoạt. Độc lập về kích thước và thể loại file nên có thêm vài tùy chọn
trong việc truy xuất những file yêu cầu này. Ví dụ như bạn có thể sử dụng tham chiếu trực
tiếp URL để truy xuất những file hình ảnh (Image) hoặc bạn có thể đồng bộ sự bắt đầu
trong việc tải về hay truy xuất những thư viện assembly hoặc những file zip.
Báo cáo đồ án tốt nghiệp GVHD: TS. NGUYỄN CHÁNH THÀNH
Hình 5: Biểu đồ tổng hợp những gói cấu trúc ứng dụng và những tùy chọn triển khai trong
những file ứng dụng.
3. Triển khai file trong những gói hoặc trong những yêu cầu (Deploying Files In-
Package or On-Demand)
Việc triển khai những file ứng dụng bên trong những gói ứng dụng được diễn ra
trong thời gian khởi động và trong lúc tải về, chúng chỉ ngưng khi bạn quyết định ngừng
những tiến trình này lại. Quyết định này hoàn toàn độc lập với những yêu cầu của ứng
dụng. Chẳng hạn, bạn có thể cho phép khai báo nhiều file vào bên trong những gói ứng
dụng và lần lượt nhận được những hồi đáp sau khi bạn bắt đầu thực hiện (Startup). Trong
trường hợp này bạn có thể duy trì trạng thái hồi đáp hiển thị lên màn hình khi bắt đầu tiến
trình tải về.
SVTH: Thân Hoàng Lộc Trang 37
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 38
Nguyễn Anh Việt
Lưu Xuân Việt
Trong một vài trường hợp, Silverlight plug-in sẽ không thể tải lên những gói ứng
dụng lớn. Khi bạn khởi tạo những ứng dụng lớn, bạn nên triệu gọi những file cần thiết để
tối ưu hóa kích thước dữ liệu.
Khi bạn quyết định di chuyển một vài file ra ngoài gói ứng dụng, bạn nên bố trí lại
một vài tùy chọn.
Những file dễ dàng bố trí lại là những file tham chiếu (reference) trong khai báo
quan hệ URIs ví dụ như những file video và image. Khi Silverlight plug-in bắt gặp một
quan hệ URL trong code hoặc XAML nó sẽ được nhìn thấy trong gói ứng dụng đầu tiên.
Nếu plug-in không thể tìm thấy file trong gói ứng dụng thì nó sẽ thấy được bên trên máy
chủ. Nghĩa là bạn có thể di chuyển bất kỳ file nào mà bạn tham chiếu bởi quan hệ URL
mà không cần phải thay đổi code.
Nhiều file không thể tham chiếu bằng URL và nó phụ thuộc vào những tiến trình
xử lý riêng nếu bạn bố trí lại những file yêu cầu này. Ví dụ như, bạn muốn bố trí lại thư
viện assembly, bạn nên thêm code để triệu gọi những yêu cầu và tải chúng lên vùng ứng
dụng.
Bạn cũng có thể muốn di chuyển một vài file tài nguyên ra ngoài những gói ứng
dụng nhưng truy xuất chúng trong yêu cầu như là tải 1 trình đơn về. Bạn cũng có thể thực
hiện những điều trên bằng cách gói chúng lại thành những file zip và triển khai chúng lại
trên máy chủ.
V. ỨNG DỤNG DỊCH VỤ (Application Services)
Khi bạn tạo một ứng dụng sử dụng managed API với Silverlight, bạn nên tạo một
lớp mà bắt nguồn từ Application. Lớp Application cung cấp một vài dịch vụ mà những
ứng dụng thường cần tới. Trước hết, nó miêu tả những entry point của code ứng dụng
trong suốt chu trình sống của Silverlight plug-in.
Báo cáo đồ án tốt nghiệp GVHD: TS. NGUYỄN CHÁNH THÀNH
Chu trình sống của Silverlight plug-in bắt đầu khi user “lướt” vào trang web chứa
Silverlight plug-in. Nếu user đã cài đặt Silverlight, trình duyệt web sẽ kích hoạt plug-in và
bắt đầu tải những gói ứng dụng của bạn xuống.
Plug-in được nạp vào trong theo dịch vụ của Silverlight bởi Silverlight CLR,
chúng tạo ra một AppDomain cho ứng dụng. Khi những gói ứng dụng của bạn hoàn tất
việc tải về, CLR sẽ triệu gọi lớp Application và sinh ra những event Startup.
Bạn có thể thêm code vào những lớp ứng dụng. Bên cạnh đó,bạn sử dụng một
event handle startup cho hầu hết những yêu cầu khởi tạo ứng dụng, như trình bày một
trang giao diện người dùng.
Hình 6: Biểu đồ minh họa quy trình kích hoạt plug-in và mối quan hệ giữa các thành phần
trong quy trình
SVTH: Thân Hoàng Lộc Trang 39
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 40
Nguyễn Anh Việt
Lưu Xuân Việt
Chúng cũng có thể chỉ là một trường hợp Application trong ứng dụng nền
Silverlight. Sau khi khởi động (Startup), trường hợp Application này cung cấp một vài
dịch vụ mà ứng dụng thường cần tới. bạn có thể truy xuất những dịch vụ này từ bất kỳ
đoạn code nào trong ứng dụng bởi sự truy xuất trường hợp Application từ đặc tính tĩnh
của Application..::.Current.
Những đặc trưng trong lớp Application gồm:
• Quản lý thời gian sống của ứng dụng.
• Tải lên những file tài nguyên của ứng dụng.
• Xử lý những ngoại lệ Unhandled.
• Tích hợp những Web host.
1. Application Lifetime Management
Để quản lý thời gian sống của ứng dụng bạn có thể thêm code vào trong những lớp
ứng dụng để chạy và bắt điểm thời gian sống của ứng dụng:
• Lớp khởi tạo ứng dụng.
• Event Startup ứng dụng.
• Event Exit ứng dụng.
a. Lớp khởi tạo ứng dụng (Application Class Construction)
Trong lớp ứng dụng khởi tạo, bạn có thể thêm code vào trong lớp ứng dụng khởi
tạo để thi hành những yêu cầu khởi tạo cơ bản, chẳng hạn như những biến khởi tạo và
những event handler kèm theo.
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 41
Nguyễn Anh Việt
Lưu Xuân Việt
Hầu hết những lớp ứng dụng được định nghĩa đều sử dụng ngôn ngữ đánh dấu
XAML và một file code-behind. Việc xây dựng những lớp ứng dụng tiêu biểu này bao
gồm việc triệu gọi một phương thức InitializeComponent để hồi đáp trong việc kết hợp
XAML với những file code-behind. Quá trình xây dựng sinh ra và thực thi một phương
thức InitializeComponent để nạp lên XAML bởi việc triệu gọi phương thức
Application.LoadComponent.
Ứng dụng XAML có thể chỉ định event handle ứng dụng và sẽ cư trú trong thư
mục Application.Resources với thuộc tính và kiểu dáng sử dụng trong toàn thể ứng dụng.
b. Application Startup
Event Application.Startup xuất hiện khi Silverlight plug-in kết thúc quá trình tải
những gói ứng dụng lên. Tại thời điểm này, tất cả bên trong các gói assemblies đã được
tải lên bên trong vùng ứng dụng và sẵn sàng sử dụng.
Bạn có thể sử dụng event Startup để thi hành những yêu cầu khởi tạo phổ biến như:
• Xử lý dữ liệu được gọi trong quá trình khởi động, như khởi tạo và tham số URL
hoặc lưu dữ liệu vào trong những phiên làm việc trước.
• Trình bày giao diện người dùng (UI).
• Bắt đầu không đồng bộ việc tải xuống khi thêm vào những file tài nguyên hoặc
assemblies.
Sau đây là mô tả ngắn gọn cách thực hiện các yêu cầu và cung ca61op những Link
thông tin:
c. Processing Startup Data
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 42
Nguyễn Anh Việt
Lưu Xuân Việt
Để truy xuất những tham số khởi tạo ban đầu trong việc cấu hình Silverlight plug-
in, cần sử dụng thuộc tính StartupEventArgs.InitParams.
Khi truy xuất tham số URL từ trang web chủ, cần sử dụng thuộc tính
HtmlDocument.QueryString. Bạn có thể truy xuất đối tượng HtmlDocument từ thuộc tính
tĩnh HtmlPage.Document. Nhưng cần chú ý thuộc tính Document có thể không sử dụng
được nếu việc truy xuất HTML thất bại. Đây cũng là một trường hợp điển hình khi gọi
một ứng dụng nền Silverlight trong trang web chủ từ một vùng (Domain) khác.
Để truy xuất dữ liệu từ những phiên làm việc trước, ta sử dụng lớp
IsolatedStorageSettings.
Để khởi tạo data luôn sẵn sàng tương tác trong ứng dụng, cần thêm vào thư mục
Application.Resources.
d. Displaying the User Interface
Để hiển thị UI ứng dụng, cần set thuộc tính RootVisual trong event handler
Startup.
Bạn chỉ có thể set thuộc tính này ở lần đầu tiên, nhất là ở UserControl cung cấp
một Layout Root cho UI. Bạn có thể thay đổi UI của mình sau khi khởi tạo bằng cách
thay đổi nội dung của Layout root.
Chú ý:
Event Startup có thể xuất hiện trước khi trang web chủ tính toán việc sắp đặt
layout. Nếu bạn sử dụng những quan hệ kích thước trong Silverlight plug-in, giá trị
Content.ActualHeight và ActualWidth sẽ không có ý nghĩa trong ứng dụng khởi 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 43
Nguyễn Anh Việt
Lưu Xuân Việt
co giãn UI hoặc thi hành những layout nền trong kích thước hiện tại của plug-in, bạn có
thể sử dụng handle Content.Resized event.
e. Truy xuất những tài nguyên thêm vào (Retrieving Additional Resources)
Để đồng bộ những file tài nguyên hoặc assemblies thêm vào, ta sử dụng lớp
WebClient.
Nếu là file zip, bạn cần phải sử dung phương thức
Application.GetResourceStream(StreamResourceInfo, Uri) để rút trích những nội dung
bên trong sau khi tải về.
Nếu là file trong assembly, bạn có thể tải chúng vào trong ứng dụng AppDomain
bằng cách tạo mới một đối tượng AssemblyPart và gọi phương thức Load.
f. Application Exit
Event Application.Exit xuất hiện khi một hành động tiếp diễn đưa ra yêu cầu:
• User đóng trang web chính Silverlight plug-in.
• User refreshes trang web chính.
• User lướt trình duyệt từ trang web chính.
• Trang web chính sử dụng JavaScript và HTML DOM gỡ bỏ plug-in trong trang
web.
• User logs off hoặc shuts down hệ điều hành.
Một cách phổ biến trong việc sử dụng Event Application.Exit là việc sử dụng lớp
IsolatedStorageSettings để lưu lại việc bố trí các ứng dụng.
2. Application Resource File Loading
Silverlight có khả năng cung cấp rộng lớn đối với việc tải lên những file tài nguyên từ
một ứng dụng assembly, một thư viện assembly, một gói ứng dụng và một host server.
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 44
Nguyễn Anh Việt
Lưu Xuân Việt
Những sự hỗ trợ này phụ thuộc và việc bạn định cấu hình cho những file tài nguyên, triển
khai chúng ở đâu và tải chúng lên như thế nào.
Lập trình truy xuất những file tài nguyên thô sử dụng phương thức
Application..::.GetResourceStream. Phương thức này quy định dung lượng cho phép rút
trích những file tài nguyên từ gói ứng dụng hoặc từ file zip mà bạn truy xuất theo yêu cầu.
3. Xử lý những ngoại lệ Unhandled (Unhandled Exception Processing)
Trong suốt thời gian sống của ứng dụng, có những trạng thái mà không thể lường
trước được xuất hiện mà nguyên nhân đó Silverlight plug-in đưa vào những ngoại lệ. Mặc
dù bạn có thể bắt được những ngoại lệ đó trong code ứng dụng, nhưng cũng không thể bắt
được hết những ngoại lệ tiềm tàng.
Ngoại lệ Unhandled sẽ là nguyên nhân Silverlight plug-in dừng tiến trình chạy trong
trình duyệt. Event handle Application..::.UnhandledException sinh ra việc ngăn cản này.
Bạn có thể sử dụng event data để xác định xem ngoại lệ này có thể cứu chữa hay
không.Nếu có thể, hãy đặt thuộc tính
ApplicationUnhandledExceptionEventArgs..::.Handled là true.
Nếu bạn không xử lý ngoại lệ này trong code quản lý, Silverlight plug-in sẽ xuất hiện
event onError. Nó sẽ đưa cho bạn một cơ hội kết thúc xử lý ngoại lệ bằng cách sử dụng
JavaScript trong trang web chính. Event onError đưa ra lỗi code truy xuất plug-in, điều
này rất hữu ích trong việc debug.
4. Host Integration
Điều này thỉnh thoảng hữu ích cho code quản lý tương tác trực tiếp với Silverlight
plug-in trên host. Chẳng hạn như, bạn có thể muốn truy xuất giá trị cấu hình ban đầu của
plug-in, hoặc cho phép user xem plug-in ở chế độ full-screen.
Báo cáo đồ án tốt nghiệp GVHD: TS. NGUYỄN CHÁNH THÀNH
Việc truy xuất một đối tượng được miêu tả trong host plug-in hiện hành ta sử dụng
thuộc tính Application..::.Host. Thuộc tính này trả về một trường hợp của lớp
SilverlightHost, mà cung cấp hàm xử lý song song những tính năng mô tả trong
Silverlight Plug-in Object Reference.
VI. MỘT SỐ VÍ DỤ VỀ SILVERLIGHT
Ví dụ đầu tiên cho lập trình ứng dụng Silverlight.
Chúng ta sẽ bắt đầu xây dựng chương trình Digg bằng cách chọn File->New trong
VS2008 và dùng hộp thoại New Project để tạo một ứng dụng "Silverlight Application"
(nhớ rằng bạn đã tải về và cài đặt Silverlight Tools for VS 2008 thì mới có mục này)
Chúng ta sẽ đặt tên cho dự án này là "DiggSample". Khi nhấn vào nút OK, Visual
Studio sẽ mở một hộp thoại nữa cho phép lựa chọn việc tạo chỉ một ứng dụng Silverlight,
hay tạo thêm cả một ứng dụng ASP.NET vào Solution để chứa ứng dụng Silverlight bên
SVTH: Thân Hoàng Lộc Trang 45
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
trong. Với ứng dụng này, chúng ta sẽ chọn để thêm một ứng dụng ASP.NET và đặt tên
cho nó là "DiggSample_WebServer". Khi chúng ta nhấn OK, VS sẽ tạo một solution chứa
cả hai ứng dụng Silverlight và ASP.NET.
Khi thực hiện lệnh build, VS sẽ tự động sao chép ứng dụng Silverlight sang ứng
dụng web của chúng ta. Ứng dụng web được tạo sẵn này sẽ có cả các trang ASP.NET và
các trang HTML tĩnh, và chúng ta có thể dùng các trang này để test ứng dụng Silverlight.
Ghi chú: Các ứng dụng Silverlight có thể được dùng bên trong bất kỳ web server nào
(bao gồm cả Apache trên Linux) và được chứa bên trong các trang HTML tĩnh hay bất kỳ
dạng trang web động nào (bao gồm cả PHP, Java, Ruby, Python...). Với ứng dụng Digg,
chúng ta sẽ không dùng mã server-side nào, chúng ta sẽ dùng tính năng "cross-domain
networking" của Silverlight để truy cập tập hàm của dịch vụ Digg một cách trực tiếp. Sở
dĩ tôi tạo cả ứng dụng ASP.NET là vì muốn tận dụng tính năng triển khai tự động và dùng
thử nó trong web server có sẵn khi phát triển ứng dụng ASP.NET với VS.
- Có gì trong một ứng dụng Silverlight
SVTH: Thân Hoàng Lộc Trang 46
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
Mặc nhiên, một ứng dụng Silverlight mới được tạo sẽ chứa hai file có tên
Page.xaml và App.xaml, cũng như các file code behind tương ứng (được viết bằng VB,
C#, Ruby hoặc Python).
Các file XAML là các file ở dạng văn bản mà bạn dùng để khai báo các thành phần
giao diện trong một ứng dụng Silverlight hay WPF. XAML cũng có thể được dùng cả
trong việc khai báo các đối tượng .NET.
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.
Khi chúng ta build ứng dụng DiggSample, Visual Studio sẽ mặc nhiên biên dịch
các lệnh và các thẻ XAML vào một file assembly .NET, rồi đóng gói nó cùng với các tài
nguyên tĩnh (như các file hình ảnh hay văn bản mà chúng ta muốn đóng gói cùng) vào
SVTH: Thân Hoàng Lộc Trang 47
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
một file có tên DiggSample.xap:
Các file ".xap" (đọc là zap) dùng thuật toán nén zip để tối thiểu hóa kích thước file.
Một ứng dụng "Hello world" được viết trong .NET Silverlight (dùng VB hay C#) chỉ có
kích thước 4KB.
Ghi chú: Một số control trong bản Beta1 nếu được dùng sẽ phải được đóng góp kèm với
ứng dụng, do vậy có thể sẽ làm tăng kích thước của file .xap. Chương trình Diggchỉ dùng
các control trong bản Beta2 và phiên bản chính thức, do vậy kích thước tổng cộng sẽ chỉ
khoảng 6-8KB.
Để chạy một file Silverlight 2, bạn sẽ phải thêm thẻvào trong một 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 thực thi chính xác trong một Panel phức tạp nhưng Grid thì lại không đáp ứng
được.
Mỗi một thời điểm. các con (Children) trong UIElement thay đổi vị trí, nó có khả
năng sinh ra thành công một tiến trình mới bởi hệ thống thể hiện. Đó là điều quan
trọng để hiểu được các sự kiện có thể gọi hệ thống thể hiện, bởi vì những lệnh gọi
không cần thiết có thể làm cho sự thực thi một trình ứng dụng trở nên nghèo nàn.
Điều đơn giản, Layout là một hệ thống đệ quy mà các bước của nó là sự điều chỉnh
vị trí, kích thước và cách thể hiện ra màn hình. Để xây dựng thành công một hệ thống
Layout cần chú ý 2 điểm đối với mỗi thành phần tập hợp con (Children), thứ nhất là
xác định phạm vi và thứ 2 là xác định cách bố trí. Phạm vi là vị trí đã được xác định rõ
kích thước cho mỗi phần tử con. Cách bố trí phụ thuộc vào vị trí và kích thước của các
phần tử con sau khi đã cân chỉ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 73
Nguyễn Anh Việt
Lưu Xuân Việt
1. Cách thể hiện SilverLight trong hệ thống.
- Vị trí và kích thước của trình nhúng (plug-in) Silverlight.
Trình nhúng Silverlight xác định rõ khu vực mà trình ứng dụng Silverlight cơ bản
thể hiện trên đó. Chúng ta có thể gắn kết trình nhúng này vào trang chủ HTML.
Chúng ta cũng có thể chỉ định rõ một nơi nào đó trong trang HTML đang thể hiện
hoặc chúng ta cũng có thể đưa toàn bộ trình nhúng này lên trên một trang HTML.
Bởi vì chúng có hai cấu trúc tham chiếu tới vị trí đối tượng SilverLight.
- Phạm vi trình nhúng: Vị trí thể hiện đối tượng của SilverLight chỉ trong phạm vi
giới hạn của hộp thoại trình nhúng.
- Phạm vi HTML: Toàn bộ trình nhúng và tất cả vị trí của các đối tượng trong trình
nhúng phụ thuộc vào nơi mà chúng ta đặt trình nhúng trong HTML.
- Việc thêm một trình nhúng SilverLight vào một trang web có hai cách:
o Sử dụng HTML: Tất cả những phần tử đối tượng chúng ta cho phép nhúng
và định hình rõ trình nhúng SilverLight ( SilverLight plug-in) trong trang
HTML, vạch ra hướng mà có sự tương thích với tất cả sự hỗ trợ của người
dùng. Chủ đề này mô tả làm thế nào chúng ta hoàn tất, phổ biến những yêu
cầu tiếp theo sử dụng những phần tử đối tượng:
Nhúng một SilverLight và chỉ định rõ ứng dụng trên trang chủ.
Định rõ việc luân phiên việc trình bày bằng HTML khi SilverLight
không cài đặt được.
Trong trang HTML các thao tác này hoàn toàn khác, cái khác biệt rõ ràng nhất là
cách cấu hình tham số truyền của các phần tử đối tượng. Theo những procedure
mô tả trong một trình độc lập nhưng chỉ xây dựng hoàn tất một trình duyệt đa
nhiệm HTML ví dụ ở cuối chương này.
Chúng ta nên sử dụng kết quả của những ví dụ này như là một mẫu
(Template) cho project thay vì sử dụng những phần con trong mỗi procedure. Kế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 74
Nguyễn Anh Việt
Lưu Xuân Việt
quả của những ví dụ này cũng đảm bảo sự tương thích giữa các trình duyệt với
nhau và cũng là cơ sở trong các mẫu (Template) mà Visual Studio và Expression
Blend sử dụng để kiểm tra những trang đã sinh ra.
2. Đối tượng tham chiếu trong trình nhúng (plug-in) Silverlight.
Trình nhúng Silverlight là một đối tượng mà có thể sử dụng những kiểu lập trình
và truy xuất dữ liệu khác nhau. Những thành phần của lớp Plug-in có thể được truy xuất
thông qua phương thức HTML DOM và thông qua những phần tử đối tượng đã được định
nghĩa trên nền Silverlight plug-in trong một trang HTML. Tương tự những hàm cũng
được truy xuất thông qua APIs mà đưa ra trang HTML dạng xuất ra như đối tượng những
thẻ. Cũng giống như trong ASP.NET, Silverlight và những trình nhúng Silverlight được
điều khiển trên trang Web máy chủ và những hàm trong thư viện Silverlight.js. Một vài
hàm trong trình nhúng Silverlight có thể được truy xuất trong quá trình chạy (Run-time)
bởi chúng được sử dụng trong những mô hình lập trình Silverlight (the JavaScript API or
managed code).
- Sử dụng JavaScrip: Cách khác, chúng ta cũng có thể khai báo những đối tượng sử
dụng thông qua những hàm mà JavaScrip cung cấp trong file Silverlight.js. Những
hàm này tạo ra đối tượng cơ bản và cung cấp như là những tiện nghi trong sự trình bày
của JavaScrip.
o Silverlight.js là một file hướng dẫn được cung cấp trong Silverlight SDK. Ta có
thể gọi các hàm createObject và createObjectEx khai báo file này khi nhúng
Silverlight Plug-in vào trang web. Gọi chung những hàm này là hàm nhúng.
o Những hàm nhúng này cho phép cấu hình chi tiết những tham số vào và sinh ra
những đối tượng HTML. Kỹ thuật nhúng này tương thích với tất cả sự hỗ trợ
các trình duyệ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 75
Nguyễn Anh Việt
Lưu Xuân Việt
- Các hàm nhúng này cung cấp thêm các lợi ích sử dụng các đối tượng ngay khi:
o Chúng cho phép ta cấu hình một trương trình Silverlight plug-in khi ta
nhúng vào, hoặc trừu tượng hóa chi tiết một cấu hình độc lập, một hàm
dùng chung.
o Chúng vẫn tương thích ngược lại với các hàm createObject và
createObjectEx trong Silverlight 1.0.
o Mỗi Plug-in nhúng vào có một nét riêng cho phép ta nhận dạng chúng. Điều
này rất hữu ích khi nhúng nhiều Plug-in vào một trang web đơn.
3. The Layout Containers
Một cửa sổ Silverlight chỉ có thể chứa duy nhất một phần tử đơn lẻ. Để chứa nhiều
hơn một phần tử và tạo ra nhiều giao diện người dùng thực tế. Bạn cần phải có một chỗ
chứa trên một trang và sau đó thêm những phần tử ấy vào chỗ chứa này. Giao diện này đã
được định rõ bởi khuôn chứa bạn đã sử dụng.
Tất cả những Layout Container là những bảng có nguồn gốc từ lớp trừu tượng
System.Windows.Controls.Panel
Báo cáo đồ án tốt nghiệp GVHD: TS. NGUYỄN CHÁNH THÀNH
Hình 1: Bảng phân cấp lớp Panel
Lớp Panel thêm vào 2 thuộc tính chung là: Background và Children. Background là
bộ bút vẽ sử dụng để sơn màu nền của Panel. Children là tập hợp những mục mà lưu trữ
trên Panel. Đây là mức thứ nhất của các phần tử - Trong một phát biểu khác, bản thân
những phần tử này cũng có thể chứa đựng nhiều phần tử khác.
Nói riêng, lớp Panel không chỉ là một lớp cơ bản mà còn là một điểm bắt đầu cho
nhiều lớp chuyên dụng khác. Để thuận tiện trong việc sắp đặt layout, Silverlight cung cấp
3 loại Panel như hinh 2. Cũng giống như hầu hết các trình điều khiển trong Silverlight và
nhất là những phần tử trực quan. Những lớp này cũng được xây dựng trên
System.Windows.Controls namespace.
Tên Mô tả
StackPanel Nơi những phần tử được xếp thành
hàng ngang hay hàng dọc. Bao chứa
SVTH: Thân Hoàng Lộc Trang 76
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 77
Nguyễn Anh Việt
Lưu Xuân Việt
Layout này chia những thành phần lớn,
những trang phức tạp thành những phần
nhỏ tiêu biểu thưởng sử dụng.
Grid Sắp xếp các phần tử trong hàng và cột
tùy theo sự ẩn hiện của bảng. Đây là
một tính mềm dẻo nhất và thường sử
dụng với những bao chứa Layout.
Canvas Cho phép những phần tử có một vị trí
tuyệt đối sử dụng hệ tọa độ cố định.
Bao chứa Layout này là một bao chứa
đơn nhưng nó có tính mềm dẻo.
Những bao chứa Layout có thể xếp chồng nhau. Một giao diện người dùng điển hình bắt
đầu với Grid, Silverlight hoàn toàn có khả năng sinh ra bao chứa, và chứa đựng những
bao chứa Layout khác mà đã nhóm nhỏ và sắp xếp những phần tử lại. Chẳng hạn như:
một TextBoxes tiêu đề, những Item trong List, những Icon trên ToolBar và v…v…
a. StackPanel:
Sắp xếp các phần tử con theo một đường thẳng đơn theo hướng ngang hoặc dọc.
Mặc định của giá trị HorizontalAlignment và VerticalAlignment là trạng thái
Stretch.
Giá trị mặc định của thuộc tính Orientation là dọc (Vertical).
Các sự kiện của StackPanel: Ngoài các sự kiện
Các file đính kèm theo tài liệu này:
- NGHIEN CUU SILVERLIGHT VA XAY DUNG UNG DUNG WEB HO TRO PHAT TRIEN BAI GIANG DANG MULTIMEDIA.pdf