<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    狂淘

    www.kuangtao.net

       :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      6 隨筆 :: 185 文章 :: 68 評論 :: 0 Trackbacks

    這是8個系列教程的第三部分,這系列示范如何使用Silverlight 2的Beta1版本建造一個簡單的Digg客戶端應用。這些教程旨在按順序閱讀,幫著解釋Silverlight的一些核心編程概念。

    使用Networking取回Digg故事

    Silverlight 2 有內置的networking API,允許Silverlight客戶端調用遠程的REST, SOAP/WS*, RSS, JSON和XML HTTP服務。Silverlight 2還包含了內置的socket API (System.Net.Sockets),允許Silverlight客戶端通過非HTTP協議來通信(對聊天服務等這樣的場景非常理想)。

    跨域網絡訪問

    Silverlight 2應用在做網絡調用時,始終可以回調到它們的“原始(origin)”服務器(意味著它們可以調用下載的應用來自的同域的URL)。Silverlight 2應用還可以做跨域網絡調用(意味著它們可以調用與下載的應用來自的不同的域上的URL),只要遠程的web服務器擁有一個XML策略文件,表明客戶端是允許做這些跨域調用的。

    Silverlight 2 定義了一個XML策略文件格式,允許服務器管理員精確地控制一個客戶端應該有些什么訪問權。Silverlight 2 也遵守默認的Flash跨域策略文件格式-這意味著你可以使用Silverlight 2 來調用web上已經允許Flash客戶端跨域訪問的任何現有的遠程REST, SOAP/WS*, RSS, JSON 或 XML 端點(end-point )。

    Digg.com有一套非常酷的通過HTTP通信的Digg APIs。因為他們有一個Flash跨域策略文件在他們的服務器上,我們可以直接從我們的Silverlight Digg 客戶端應用中調用它們(而不要求我們通過我們的web服務器去訪問他們的API)。

    Digg.com 主題 Feed API

    我們要允許終端用戶使用我們的應用輸入一個搜索主題(譬如,“Programming”),然后點擊“搜索”按鈕,從Digg.com取回符合條件的前N條故事:

    我們可以使用Digg.com List Stories REST API feed API 來實現。它在URL中接受一個主題參數(譬如,GET /stories/topic/programming),然后返回一個匹配那個主題的XML格式的Digg故事集。點擊這里看一下這個XML格式的例子。

    使用 System.Net.WebClient 來異步調用Digg REST Feed

    在上面的搜索按鈕被點擊之后,我們將處理它的Click事件,從WaterMarkTextBox控件中取回要搜索的主題字符串,然后啟動一個發向Digg的網絡調用,為那個主題取回相應的XML列表。

    Silverlight 在 System.Net 命名空間下包含了WebClient輔助類(該類也在完整的.NET 框架下)。我們可以使用這個類從URL異步下載內容。異步下載Digg故事的好處是,在等待遠程服務器的回復時,我們的UI不用阻塞或變得沒有反應(允許我們擁有一個非常流暢的用戶體驗)。

    通過WebClient類執行異步下載,我們要做的是注冊一個DownloadStringCompleted事件處理方法(它將在請求的內容被下載之后被調用),然后調用WebClient.DownloadStringAsync(url) 輔助方法來開始下載:

    使用上面的代碼,我們現在就可以異步取回一個XML數據的字符串,內含有關用戶想要的任何主題的Digg故事。

    使用LINQ to XML把XML格式的Digg故事分析成Story類對象

    至此,我們可以取回Digg故事數據的XML片段了,下一步將是對其進行分析(parse),并將它轉換成我們可以操作和綁定到控件上的DiggStory對象。

    我們將首先定義一個DiggStory類,該類擁有可以映射到來自Digg的XML內容上的屬性(我們將利用C#新的 的特性來實現):

    然后我們就可以使用LINQ (是內置于 Silverlight 2中的)和 LINQ to XML (是包含在我們的Silverlight 應用中的一個額外的庫 )來輕松地分析和過濾從Digg返回的XML文檔,使用下面的代碼把它翻譯成一個DiggStory對象序列:

    注意上面,我們現在有了來自XML的我們可以操作的強類型的DiggStory對象。

    在DataGrid控件中顯示Digg故事

    我們將使用新的 Silverlight DataGrid 控件來在我們的應用中顯示Digg故事。要使用它,我們要引用Silverlight Data 控件程序集,然后把前面網頁上的“Todo”文字替換成一個DataGrid控件聲明:

    DataGrid允許你明確地配置列的聲明和顯示類型(為取得最大的控制),或者,你也可以設置它的AutoGenerateColumns屬性成true,讓DataGrid對數據源使用反射,基于你的對象的定義,為你創建默認的列。

    然后我們就可以更新我們的后臺代碼類,用編程的方法將DataGrid的ItemSource屬性綁定到在點擊搜尋按鈕時從Digg取回的故事序列:

    現在,運行我們的Silverlight應用,做一個搜索的話,我們將看到從Digg取回的實時主題故事數據的列表:

    Silverlight的Datagrid支持你預期客戶端網格控件應該擁有的所有的標準功能:雙向原地編輯,選擇,卷動,改變表列大小等等。它還支持自動流動的布局,意味著它可以動態地擴展或收縮來充滿包含它的內容容器。DataGrid還擁有一個豐富的模板模型,允許你對顯示和表列數據的編輯進行定制。我在將來會撰寫更多的貼子,討論如何使用DataGrid。

    以下的步驟

    現在我們可以從Digg.com 取回Digg故事數據,并在我們的應用中將故事數據顯示出來了。

    下一步將是回到我們的Page.xaml 標識,去掉我們目前正在使用的行內的樣式聲明。

    主站蜘蛛池模板: 亚洲黄色免费电影| 久久国产乱子伦精品免费不卡| 99久久久国产精品免费无卡顿| 亚洲av日韩av高潮潮喷无码| 日韩精品无码免费专区午夜| 亚洲综合网站色欲色欲| 二区久久国产乱子伦免费精品| 国产亚洲精品自在线观看| 中文字幕在线观看免费| 国产亚洲无线码一区二区| 国产成人精品免费久久久久| 亚洲精品在线免费观看视频| 国产日本一线在线观看免费| 国产亚洲精品影视在线| 日本一道综合久久aⅴ免费| 羞羞漫画页面免费入口欢迎你| 精品国产亚洲男女在线线电影| 中文字幕免费在线播放| 亚洲午夜精品久久久久久人妖| 亚洲成人免费网站| 亚洲av无码一区二区三区人妖| 国产成人免费A在线视频| 国产精品高清免费网站| 亚洲日本在线观看| 我要看免费的毛片| 亚洲精品黄色视频在线观看免费资源 | 欧洲美熟女乱又伦免费视频| 亚洲国产av玩弄放荡人妇| 亚洲精品NV久久久久久久久久| 最新国产乱人伦偷精品免费网站 | 四虎国产成人永久精品免费| 最新国产成人亚洲精品影院| 免费精品国产自产拍观看| a级毛片毛片免费观看久潮喷| 亚洲精品影院久久久久久| 国产aa免费视频| 99精品一区二区免费视频| 亚洲国产成人手机在线观看| 国产gv天堂亚洲国产gv刚刚碰| 国产h肉在线视频免费观看| 特级一级毛片免费看|