• 因远程访问导致Silverlight中Design界面不显示的解决方法


    为了更方便说明问题,本文将新建一个项目用于重现错误,然后解决错误。说明:vs2010 ultimate + silverlight5

    本文中所有代码都可以在github中查看,git版本中采用了master-dev的方式。在master中可以查看每一个demo的最后完成,在dev中可以查看每一步的代码。

    github地址:git@github.com:kiwiwin/silverlight-demo.git

    一、产生错误

    1.首先创建一个新的silverlight application project。取名为mode-check-demo。

    2.在mode-check-demo.Web中新建一个webservice,取名为MyDataService。在其中添加一个WebMethod,取名为GetData

        public class MyDataService : System.Web.Services.WebService
        {
    
            [WebMethod]
            public string GetData()
            {
                return "This is My Data";
            }
        }


    3.编译mode-check-demo.Web,在mode-check-demo中添加service reference,找到MyDataService, namespace取名为MyDataService

    4.添加一个UserControl,取名为Data.xaml,并添加一个loaded事件,表示当Data.xaml被载入的时候,触发该事件

        public partial class Data : UserControl
        {
    
    //...
            private void UserControl_Loaded(object sender, RoutedEventArgs e)
            {
                var client =  new MyDataServiceSoapClient();
                client.GetDataCompleted += (s, args) => displayBox.Text = args.Result;
                client.GetDataAsync();
            }
        }

    5.将Data.xml拖入MainPage中,如果你看到下面这个提示,我的目的就算达到了:

    System.MissingMethodException


    6.ctrl+F5,运行,在浏览器中是可以正常使用的。[微笑会不会有人鄙视我用IE呢?]

    二、解决问题

    从Design中可以看出问题的产生原因,是MainPage中load了Data这个UserControl,而UserControl的loaded对应的事件是远程的,所以出现了上图中显示的错误。

    1.在UserControl_Loaded中检查是不是出于Design Mode中,如果出于Design Mode,则不加载数据:

            private void UserControl_Loaded(object sender, RoutedEventArgs e)
            {
                if (!System.ComponentModel.DesignerProperties.GetIsInDesignMode(this))
                {
                    var client = new MyDataServiceSoapClient();
                    client.GetDataCompleted += (s, args) => displayBox.Text = args.Result;
                    client.GetDataAsync();
                }
            }


    2.编译,reload MainPage.xaml,搞定

  • 相关阅读:
    jq:翻页时,保存上页多选框checkbox选中状态
    SpringMVC日期类型转换问题处理方法归纳
    SpringMVC的Date与String互转
    使用AJAX异步提交表单的几种方式
    ORACLE——日期时间格式化参数详解 之三
    ORACLE——日期时间格式化参数详解 之一
    ORACLE——日期时间格式化参数详解 之二
    Json-lib 进行java与json字符串转换之二
    Json-lib 进行java与json字符串转换之一
    java继承-子类调用父类的方法中包含子类重写的方法
  • 原文地址:https://www.cnblogs.com/java20130722/p/3206881.html
Copyright © 2020-2023  润新知