Wiki


Wiki Table of Contents

Page Details

Published by:
This page has not yet been rated

Silverlight Tip of the Day #41: Using Bookmarks in your Silverlight Application

Filed under: [Edit Tags]

Bookmarks rất có ích trong các trang web, bởi vì chúng cho phép người ta có thể trực tiếp quay trở lại  một section( một phiên làm việc, một lần truy cập)  của  trang web mà họ đã truy cập trước đó. Bài hướng dẫn này sẽ trình bày cho bạn biết làm cách nào để áp dụng và sử dụng bookmarks trong những ứng dụng Silverlight.

Thí dụ, nếu người sử dụng đánh vào dòng liên kết này  http://www.MySilverlightApp.com/default.aspx#Page2  bạn sẽ ngăn việc này từ thanh địa chỉ và hiển thị trang thứ hai của ứng dụng.

Đối với demo của chúng ta, với mục đích đơn giản, chúng ta sẽ chỉ tạo mỗi  trang một phần tử Canvas với một TextBlock.  Ý tưởng là bạn làm cho mỗi trang của bạn một  UserControl của riêng nó.  Tôi đã tạo hai trang : Page 1 và Page  2.

Page.xaml:

<UserControl x:Class="SilverlightApplication14.Page"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Width="400" Height="300">
    <Canvas>
        <Canvas x:Name="Page1">
            <TextBlock>Hello there this is page 1</TextBlock>
        </Canvas>
        <Canvas x:Name="Page2" Visibility="Collapsed">
            <TextBlock>Hello there this is page 2</TextBlock>
        </Canvas>
    </Canvas>
</UserControl>

Trong hàm khởi tạo của class  Page.xaml.cs chúng ta gọi hàm  ProcessBookmark().  Thủ tục này sẽ tạo ra các chuỗi địa chỉ  trong bookmark từ thanh địa chỉ bằng cách gọi HtmlPage.Window.CurrentBookmark; Mỗi lần chúng ta muốn đánh dấu trang   thì chúng ta có thể gán Visiblity của Canvas mà chúng ta muốn hiển thị là  Visible. Chú ý là chúng ta cũng có thể đánh dấu trang  cho  thanh tiêu đề của trình duyệt window bằng cách gọi HtmlPage.Document.SetProperty("title", _page1Title);

public partial class Page : UserControl
{
    const string _page1Title = "My Silverlight App - Page 1";
    const string _page2Title = "My Silverlight App - Page 2";
 
 
    public Page()
    {
        InitializeComponent();
        ProcessBookmark();
    }
 
 
    private void ProcessBookmark()
    {
        string bookMark = HtmlPage.Window.CurrentBookmark;
        switch (bookMark)
        {
            case "Page1":
                HtmlPage.Document.SetProperty("title", _page1Title);
                Page1.Visibility = Visibility.Visible;
                Page2.Visibility = Visibility.Collapsed;
                break;
            case "Page2":
                HtmlPage.Document.SetProperty("title", _page2Title);
                Page1.Visibility = Visibility.Collapsed;
                Page2.Visibility = Visibility.Visible;
                break;
        }
    }
}

Vậy nếu bạn muốn cài một thanh địa chỉ vào một bookmark (có nghĩa là lưu lại địa chỉ trang web)? Bạn có thể thay đổi chuỗi kí tự trong thanh địa chỉ của trình duyệt của bạn bằng cách gọi như sau: HtmlPage.Window.Eval("window.location.hash='Page1'");

Cụ thể hơn:

   1: private void SetBookmark(string bookmark)
   2: {
   3:     HtmlPage.Window.Eval("window.location.hash='"+bookmark+"'");
   4: }

Hiện tại nếu bạn nhấn nút Back để quay lại trong trình duyệt của bạn, nó sẽ đẩy bạn ra khỏi ứng dụng Silverlight của  bạn. Tôi đang tìm kiếm cách để chặn nút Back và nút Forward trong trình duyệt của bạn, để ta có thể tạo một danh sách nội bộ  các bookmark (history of bookmarks) cho ứng dụng Silverlight của chúng ta. Nếu bạn nào có những tài nguyên / kĩ thuật tốt về điều này, hãy cho tôi biết và tôi sẽ trình bày trên blog này.

Thank you,
--Mike Snow

Recent Comments

Leave the first comment for this page.