6

我有一个带有一些数据的屏幕。在屏幕内部,我有两个自定义控件(在左侧和右侧)。

我需要做的是以下几点:

将数据库中的一些数据绑定到第一个自定义控件中的一些控件。(填写列表、组合框等,问题不大)

然后用户可以在列表中选择一个条目,按下一个按钮 -> 现在应该使第二个 CustomControl 可见;根据选择从数据库请求一些数据并动态创建和显示图表。

所以我知道如何构建图表和构建控件。但是如何通过代码从屏幕访问数据并从第一个 CustomControl 中访问另一个 CustomControl?

编辑:

我发现的事情。

  1. 从屏幕访问控制

    this.FindControl("yourControl");

  2. 用控件做一些事情:

    this.FindControl("yourControl").ControlAvailable += ( (o,e) => { YourControlType myControl = e.Control as YourControlType; });

  3. 访问屏幕数据

        IContentItem dataContext = this.DataContext as IContentItem;
        IScreenObject screen = dataContext.Screen;
    
        IScreenProperty prop = screen.Details.Properties["yourProperty"];
    
        VisualCollection<yourProperty> items = prop.Value as  VisualCollection<yourProperty>;
    
  4. 显示新画面

    Application.Current.Details.Dispatcher.BeginInvoke(() => Application.Current.ShowGraphScreen(reportItem.BlockID));

也许这会对某人有所帮助。

4

1 回答 1

0

在您希望从中获取数据的数据库中的集合上创建一个带有参数的过滤器查询。将此查询添加到屏幕并将 Parameter Binding 设置为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,因此数据收集全部在后台完成。

于 2012-08-14T12:03:58.987 回答