使用Lightswitch,Silverlight和自定义控件
我有一些数据的屏幕。在屏幕内部,我有两个自定义的 控件(在左侧和右侧)。使用Lightswitch,Silverlight和自定义控件
我需要做的是以下几点:
绑定一些从数据库的一些控件的第一个自定义的控制数据。 (填表,组合框等,不是那么多的问题)
然后用户可以选择列表中的一个条目,按下按钮 - >第二个CustomControl现在应该是可见的;根据选择从数据库请求一些数据并动态创建并显示图表。
所以我知道如何构建图表并构建控件。但是,如何通过代码从屏幕访问数据 并从第一个CustomControl中访问另一个CustomControl?
编辑:
事情我发现。从屏幕
-
访问控制
this.FindControl("yourControl");
-
做一些与控制:
this.FindControl("yourControl").ControlAvailable += ((o,e) => { YourControlType myControl = e.Control as YourControlType; });
-
访问屏幕数据
IContentItem dataContext = this.DataContext as IContentItem; IScreenObject screen = dataContext.Screen; IScreenProperty prop = screen.Details.Properties["yourProperty"]; VisualCollection<yourProperty> items = prop.Value as VisualCollection<yourProperty>;
-
显示新的屏幕
Application.Current.Details.Dispatcher.BeginInvoke(() => Application.Current.ShowGraphScreen(reportItem.BlockID));
也许这将帮助别人。
使用数据库中要从中获取数据的集合上的Parameter创建Filter查询。将此查询添加到屏幕并将参数绑定设置为FirstCustomControl
。
将查询拖到屏幕树上,将其更改为图表,并根据Yann的链接检查绑定。
然后需要类似于下面的代码来显示/隐藏控制:
partial void ScreenName_InitializeDataWorkspace(List<IDataService> saveChangesTo)
{
this.FindControl("SecondCustomControl").IsVisible = False;
}
partial void ButtonName_Execute()
{
this.FindControl("SecondCustomControl").IsVisible = True;
}
由于SecondCustomControl
(我假设这是图表)被绑定到该查询,查询的参数绑定到在FirstCustomControl
中选择的值,数据收集全部在后台完成。
+1仅仅是关于如何访问屏幕数据的小宝石。由于自定义控件现在必须位于单独的库中,并且添加了对客户端应用程序的生成'Application.common'的引用,并结合您的示例,这是非常有帮助的。 – 2013-06-27 11:36:38
此链接有帮助吗? [自定义控件绑定](http://social.msdn.microsoft.com/Forums/en/lsextensibility/thread/394d7968-5210-441a-bf29-3da7001af07d) – 2012-08-14 02:50:28