zoukankan      html  css  js  c++  java
  • Silverlight项目笔记7:xml/json数据解析、TreeView、引用类型与数据绑定错误、图片加载、虚拟目录设置、silverlight安全机制引发的问题、WebClient缓存问题

    1.xml/json数据解析

         (1)xml数据解析

         使用WebClient获取数据,获取到的数据实例化为一个XDocument,使用XDocument的Descendants(XName)方法获得对应节点的数据集合,再通过Element这个方法对数据集合进行筛选,获得指定数据。

          

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

        (2)json数据解析

          silverlight里可以直接将获取的json数据转化为JsonObject。

          要获得每一个节点数据集合中子节点的数据,只需要将父节点数据转化为JsonObject进行筛选即可。

    2.MVVM下实现多级树形结构TreeView

         通过使用HierarchicalDataTemplate这种数据模板实现,MVVM下使用,设计好数据绑定集合中的子类即可

        主要是绑定的数据集合中增加了一个对应子节点的数据源集合,

       这里根节点没有从数据库中取,直接在代码中指定了名称为“组织机构树”的根节点,

        需要注意的是从数据库中读取的数据是由父节点、子节点对应关系,有了从属关系才能知道节点间如何对应。

         参考: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请求的数据有缓存,获得的数据不是最新的,用了一个简单粗暴的办法,即在请求地址后面加上随机字符串,相当于每次都重新请求一次,也就不存在缓存的问题了。

        

  • 相关阅读:
    HDU 4611 Balls Rearrangement 数学
    Educational Codeforces Round 11 D. Number of Parallelograms 暴力
    Knockout.Js官网学习(简介)
    Entity Framework 关系约束配置
    Entity Framework Fluent API
    Entity Framework DataAnnotations
    Entity Framework 系统约定配置
    Entity Framework 自动生成CodeFirst代码
    Entity Framework CodeFirst数据迁移
    Entity Framework CodeFirst尝试
  • 原文地址:https://www.cnblogs.com/colinhou/p/4052415.html
Copyright © 2011-2022 走看看