Silverlight項目筆記7:xml/json數據解析、TreeView、引用類型與數據綁定錯誤、圖片加載、虛擬目錄設置、silverlight安全機制引起的問題、WebClient緩存問題

1.xml/json數據解析

     (1)xml數據解析html

     使用WebClient獲取數據,獲取到的數據實例化爲一個XDocument,使用XDocument的Descendants(XName)方法得到對應節點的數據集合,再經過Element這個方法對數據集合進行篩選,得到指定數據。數據庫

      

    參考: http://msdn.microsoft.com/zh-cn/library/system.xml.linq.xdocument(v=vs.110).aspxjson

    (2)json數據解析瀏覽器

      silverlight裏能夠直接將獲取的json數據轉化爲JsonObject。緩存

      要得到每個節點數據集合中子節點的數據,只須要將父節點數據轉化爲JsonObject進行篩選便可。安全

2.MVVM下實現多級樹形結構TreeView

     經過使用HierarchicalDataTemplate這種數據模板實現,MVVM下使用,設計好數據綁定集合中的子類便可服務器

    主要是綁定的數據集合中增長了一個對應子節點的數據源集合,.net

   這裏根節點沒有從數據庫中取,直接在代碼中指定了名稱爲「組織機構樹」的根節點,設計

    須要注意的是從數據庫中讀取的數據是由父節點、子節點對應關係,有了從屬關係才能知道節點間如何對應。3d

     參考:http://www.cnblogs.com/lxblog/archive/2012/10/24/2737876.html

             http://www.cnblogs.com/prolove2/archive/2012/06/22/2558405.html

             http://www.cnblogs.com/lukun/archive/2011/04/14/2015747.html

             http://www.codeproject.com/Articles/26288/Simplifying-the-WPF-TreeView-by-Using-the-ViewMode

3.忽視引用類型致使數據綁定錯誤

    應用場景:兩個下拉選擇框,第一個下拉框選擇的內容變化,第二個下拉框顯示的數據隨之變化,實際上就是綁定了兩個comobox的數據集合,這兩個集合之間有對應關係。易錯點:根據第一個下拉框選擇項selectItem的值,每次都從新實例化第二個下拉框的綁定集合並賦值,這時第二個下拉框裏的顯示是錯誤的或者沒有數據顯示。緣由是:綁定其實是一個引用類型傳值的過程,從新實例化綁定集合後,對應的綁定數據集合的內存地址已經發生變化,天然就找不到數據源了。

4.經過流或動態空間加載圖片

    兩種方式都已經得到空間信息,能夠加載到地圖上。

    經過流的方式,即經過服務器圖片地址直接下載圖片到客戶端再加載的方式

   經過動態空間技術加載

   動態空間介紹:http://tm.arcgisonline.cn/2011/1209/386.html

5.虛擬目錄設置

   應場景,兩臺服務器A、B,客戶端能夠訪問A,不能訪問B,服務器A與B之間能夠互相訪問,如今客戶端須要從服務器B下載數據,如何解決呢?經過在服務器A中設置虛擬目錄指向服務器B,客戶端經過服務器A來得到服務器B中的數據便可。

   參考:

   IIS中設置虛擬目錄http://jingyan.baidu.com/article/67508eb4dfc1e69ccb1ce44b.html

   Tomcat中設置虛擬目錄http://blog.csdn.net/songuooo/article/details/8455298

6.silverlight安全機制引起的問題

    silverlight發佈後程序,在瀏覽器打開運行時,是在沙盒中運行,也就是不能訪問客戶端所在機器的資源,例如會出現全屏時輸入框(TextBlock)不能輸入、以及選擇文件上傳時提示SecurityException(在本地調試不會出現問題,發佈後使用纔出現)

    全屏狀態輸入框不能輸入,試過Out-of-Browser的設置,依然無效,目前只能使用瀏覽器全屏模式來達到全屏效果。

    選擇文件上傳時提示SecurityException,須要注意不要使用相似IO之類的東西,由於默認是沒有訪問客戶端所在計算機數據的權限,只有作相似打開文件選擇窗口的操做,即便用OpenFileDialog裏的屬性、方法才行,OpenFileDialog就至關於用戶進行了受權信任操做,容許訪問計算機資源。

7.WebClient緩存問題

     應用場景,須要修改服務器上的數據並更新,可是WebClient請求的數據有緩存,得到的數據不是最新的,用了一個簡單粗暴的辦法,即在請求地址後面加上隨機字符串,至關於每次都從新請求一次,也就不存在緩存的問題了。

相關文章
相關標籤/搜索