Silverlight -加载表单的最佳实践

本文关键字:最佳 表单 加载 Silverlight | 更新日期: 2023-09-27 18:04:19

我在asp.net中创建了一个简单的仪表板,我正试图将其转换为Silverlight。我面临的问题是WCF服务异步运行,一些控件依赖于其他控件。

理想情况下我想:

  1. 加载页面中的数据。4 WCF服务
  2. 设置用户控件的数据上下文
  3. 加载用户控件依赖表单数据
  4. 设置默认控制数据
  5. 根据默认值在用户控制中运行报告

1&2)我有大约4个对象在每个控件需要的页面中异步加载。加载这些对象后,我在每个对象上设置DataContext。我不太喜欢我的解决方案。我所做的是为完成事件中加载的每个对象设置一个bool值,当它们全部加载后,设置DataContext。我传递的对象具有所有4个对象
的属性3)我正在考虑在每个用户控制类上有一个公共方法(LoadFormData),当我设置数据上下文
时,我可以从页面执行。5)在1 &2,我有一个bool为每一块数据加载在用户控件中,当他们都加载后,我可以运行报告。

基本上,我想知道一种更好/更优雅的方法来做这件事。


页面|__用户控件1
|__用户控制2
|__用户控件3
|__用户控件4
|__用户控件5

Silverlight -加载表单的最佳实践

我刚刚找到了这篇关于让两个Silverlight控件进行通信的博文。这个例子看起来很冗长,但它基本上是使用JavaScript来进行通信。

在Control A中,你调用一段JavaScript代码(来自他的例子):

HtmlPage.Window.Invoke("changeColor", clicky.Name);

然后在页面的JavaScript中调用控件B中的方法:

function changeColor(color) {
        slObject = document.getElementById("ControlB");
        slObject.Content.Page.ChangeBackgroundColor(color);
}

这是一个微不足道的例子,但在您的情况下,您需要在控件a中准备好时进行JavaScript调用。这样就可以调用你的其他控件,让它们做自己的事情。