2012-08-13 6 views
6

私はいくつかのデータを持つ画面を持っています。画面内には、2つのカスタム コントロールがあります(左側と右側)。私がする必要がどのようなLightswitch、Silverlightおよびカスタムコントロールの操作

は次のとおりです。最初のカスタムコントロールのいくつかのコントロールに

バインドデータベースからいくつかのデータ。 (リスト、コンボボックスなどを記入し、問題はそれほど問題ではない)

ユーザーは、リスト内の項目を選択してボタンを押して、2番目のCustomControlを表示できるようにします。選択に基づいてDBからデータを要求し、チャートを動的に作成して表示します。

私はグラフを作成し、コントロールを構築する方法を知っています。しかし、データ にコードでアクセスして、最初のCustomControl内から別のCustomControlにアクセスするにはどうすればよいですか?

編集:

物事は私が見つけました。画面から

  1. アクセス制御は

    this.FindControl("yourControl");

  2. コントロールに何かを実行します。

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

  3. Access画面データ

    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'への参照を追加し、サンプルと組み合わせると大きな助けになりました。 –

+0

このリンクは役に立ちますか? [カスタムコントロールのバインド](http://social.msdn.microsoft.com/Forums/en/lsextensibility/thread/394d796​​8-5210-441a-bf29-3da7001af07d) –

答えて

0

データを取得するDB内のコレクションのパラメータを使用して、フィルタクエリを作成します。このクエリを画面に追加し、パラメータバインドをFirstCustomControlに設定します。

クエリを画面ツリーにドラッグしてグラフに変更し、Yannのリンクごとにバインディングを確認します。 SecondCustomControl以来

partial void ScreenName_InitializeDataWorkspace(List<IDataService> saveChangesTo) 
{ 
    this.FindControl("SecondCustomControl").IsVisible = False; 
} 

partial void ButtonName_Execute() 
{ 
    this.FindControl("SecondCustomControl").IsVisible = True; 
} 

(私はこれがチャートであると仮定しています)クエリにバインドされ、クエリのパラメータがバインドされている:あなたは、その後/表示するには、次のようなコードが必要になる

は、コントロールを非表示しますFirstCustomControlで選択された値に、データ収集はすべてバックグラウンドで行われます。

関連する問題