2012-08-13 161 views
6

我有一些數據的屏幕。在屏幕內部,我有兩個自定義的 控件(在左側和右側)。使用Lightswitch,Silverlight和自定義控件

我需要做的是以下幾點:

綁定一些從數據庫的一些控件的第一個自定義的控制數據。 (填表,組合框等,不是那麼多的問題)

然後用戶可以選擇列表中的一個條目,按下按鈕 - >第二個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));

也許這將幫助別人。

+0

+1僅僅是關於如何訪問屏幕數據的小寶石。由於自定義控件現在必須位於單獨的庫中,並且添加了對客戶端應用程序的生成'Application.common'的引用,並結合您的示例,這是非常有幫助的。 – 2013-06-27 11:36:38

+0

此鏈接有幫助嗎? [自定義控件綁定](http://social.msdn.microsoft.com/Forums/en/lsextensibility/thread/394d796​​8-5210-441a-bf29-3da7001af07d) – 2012-08-14 02:50:28

回答

0

使用數據庫中要從中獲取數據的集合上的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中選擇的值,數據收集全部在後臺完成。

相關問題