Silverlight -加载表单的最佳实践
本文关键字:最佳 表单 加载 Silverlight | 更新日期: 2023-09-27 18:04:19
我在asp.net中创建了一个简单的仪表板,我正试图将其转换为Silverlight。我面临的问题是WCF服务异步运行,一些控件依赖于其他控件。
理想情况下我想:
- 加载页面中的数据。4 WCF服务
- 设置用户控件的数据上下文
- 加载用户控件依赖表单数据
- 设置默认控制数据
- 根据默认值在用户控制中运行报告
1&2)我有大约4个对象在每个控件需要的页面中异步加载。加载这些对象后,我在每个对象上设置DataContext。我不太喜欢我的解决方案。我所做的是为完成事件中加载的每个对象设置一个bool值,当它们全部加载后,设置DataContext。我传递的对象具有所有4个对象
的属性3)我正在考虑在每个用户控制类上有一个公共方法(LoadFormData),当我设置数据上下文
时,我可以从页面执行。5)在1 &2,我有一个bool为每一块数据加载在用户控件中,当他们都加载后,我可以运行报告。
基本上,我想知道一种更好/更优雅的方法来做这件事。
页面|__用户控件1
|__用户控制2
|__用户控件3
|__用户控件4
|__用户控件5
我刚刚找到了这篇关于让两个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调用。这样就可以调用你的其他控件,让它们做自己的事情。