6

いくつかのデータが表示された画面があります。画面内には、2つのカスタムコントロール(左側と右側)があります。

私がする必要があるのは次のとおりです。

データベースの一部のデータを最初のカスタムコントロールの一部のコントロールにバインドします。(リスト、コンボボックスなどを入力しますが、それほど問題はありません)

次に、ユーザーはリスト内のエントリを選択し、ボタンを押すと、2番目のCustomControlが表示されます。選択に基づいてDBにデータを要求し、グラフを動的に作成して表示します。

だから私はチャートを構築し、コントロールを構築する方法を知っています。しかし、コードを介して画面からデータにアクセスし、最初の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

データを取得するDBのコレクションにパラメーターを使用してフィルタークエリを作成します。このクエリを画面に追加し、パラメータバインディングをに設定し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 に答える