none
动态加载xap 后 参数怎么传进去.. RRS feed

  • 问题

  • 在A.xap 中 用WebClient 下载B.xap 。下载完成后需要把A 中的几个参数传给B 怎么弄啊...(不用Cookie)


    ...
    2009年9月15日 9:44

答案

  • 直接以初始化参数传入不行,动态加载xap其实限制很大的,如果你用了本地资源,那么动态加载的xap读取资源就失效了。所以要采用动态加载方式开发,一定要注意,防止程序做了一半发现不能用了
    Silverlight现在很强大,以后还会更强大 如果您觉得对您有帮助,请在“是否有帮助”点“是”;如果你觉得回复很满意,请“标记为已解答”
    2009年9月15日 14:02
    版主

全部回复

  • 那就本地存储吧

    其实cookies在Silverlight 3中也很简单

    request.CookieContainer = new CookieContainer();
    就行了
    Silverlight现在很强大,以后还会更强大 如果您觉得对您有帮助,请在“是否有帮助”点“是”;如果你觉得回复很满意,请“标记为已解答”
    2009年9月15日 11:53
    版主
  • 用 LocalMessage 互相通讯应该可以吧。
    2009年9月15日 13:08
  • 用 LocalMessage 互相通讯应该可以吧。

    经测试可以:)
    Silverlight现在很强大,以后还会更强大 如果您觉得对您有帮助,请在“是否有帮助”点“是”;如果你觉得回复很满意,请“标记为已解答”
    2009年9月15日 13:57
    版主
  • Loadxap

            public MainPage()
            {
                InitializeComponent();
                UpdateButton();
                messageSender = new LocalMessageSender(
                    "receiver", LocalMessageSender.Global);
                messageSender.SendCompleted += sender_SendCompleted;
                SendMessage("message from Sender constructor");
    
            }
    
            private const int MAX_ATTEMPTS = 10000;
            private int attempt = 1;
            private int clickNumber = 1;
    
            private LocalMessageSender messageSender;
    
            private void UpdateButton()
            {
                button.Content = "send message 'click " + clickNumber + "'";
            }
    
            private void Button_Click(object sender, RoutedEventArgs e)
            {
                SendMessage("click " + clickNumber);
                clickNumber++;
                UpdateButton();
            }
    
    
    
            private void SendMessage(string message)
            {
                messageSender.SendAsync(message, attempt);
            }
    
            private void sender_SendCompleted(object sender, SendCompletedEventArgs e)
            {
                if (e.Error != null)
                {
                    LogError(e);
                    attempt++;
                    if (attempt > MAX_ATTEMPTS)
                    {
                        txtshow.Text = "Could not send message.";
                        return;
                    }
                    SendMessage(e.Message);
                    return;
                }
    
                txtshow.Text =
                    "Message: " + e.Message + Environment.NewLine +
                    "Attempt " + (int)e.UserState + 
                    " completed." + Environment.NewLine +
                    "Response: " + e.Response + Environment.NewLine +
                    "ReceiverName: " + e.ReceiverName + Environment.NewLine + 
                    "ReceiverDomain: " + e.ReceiverDomain;
    
                // Reset attempt counter.
                attempt = 1;
            }
    
            private void LogError(SendCompletedEventArgs e)
            {
                System.Diagnostics.Debug.WriteLine(
                    "Attempt number {0}: {1}: {2}", (int)e.UserState, 
                    e.Error.GetType().ToString(), e.Error.Message);
            }



    DynamicXap

            public MainPage()
            {
                InitializeComponent();
                LocalMessageReceiver messageReceiver =
                    new LocalMessageReceiver("receiver",
                    ReceiverNameScope.Global, LocalMessageReceiver.AnyDomain);
                messageReceiver.MessageReceived += messageReceiver_MessageReceived;
                try
                {
                    messageReceiver.Listen();
                }
                catch (ListenFailedException)
                {
                    output.Text = "Cannot receive messages." + Environment.NewLine +
                        "There is already a receiver with the name 'receiver'.";
                }
            }
    
            private void messageReceiver_MessageReceived(
                object sender, MessageReceivedEventArgs e)
            {
                e.Response = "response to " + e.Message;
                output.Text =
                    "Message: " + e.Message + Environment.NewLine +
                    "NameScope: " + e.NameScope + Environment.NewLine +
                    "ReceiverName: " + e.ReceiverName + Environment.NewLine +
                    "SenderDomain: " + e.SenderDomain + Environment.NewLine +
                    "Response: " + e.Response;
            }

    Silverlight现在很强大,以后还会更强大 如果您觉得对您有帮助,请在“是否有帮助”点“是”;如果你觉得回复很满意,请“标记为已解答”
    2009年9月15日 14:00
    版主
  • 直接以初始化参数传入不行,动态加载xap其实限制很大的,如果你用了本地资源,那么动态加载的xap读取资源就失效了。所以要采用动态加载方式开发,一定要注意,防止程序做了一半发现不能用了
    Silverlight现在很强大,以后还会更强大 如果您觉得对您有帮助,请在“是否有帮助”点“是”;如果你觉得回复很满意,请“标记为已解答”
    2009年9月15日 14:02
    版主
  • 版主真负责,连测试都进行了。:)

    Silverlight之间用LocalMessage应该是比较保险的做法,我个人比较推荐用这个。
    2009年9月15日 16:35