2010-11-22 5 views
1

私は4つのユーザーコントロールを持つメインウィンドウを持っています。これらの5つのエンティティは、互いに通信する必要があります。 UserControls間で値とオブジェクトを渡すための確立されたメソッドはありますか?UserControls間の値を渡す

編集:私はMVVMに精通していますが、私はそのパラダイム以外のソリューションを求めています。

答えて

2

実際のシナリオにはさまざまな方法があります。最も単純なのは、UserControlsのパブリックプロパティやイベントを公開することです。特定のデータを表示する場合は、これが望ましい方法です。あなたのコミュニケーションがより多くのモデルに関連しているなら、ViewModelを通して(そしてMVVMを使って)ルートを進めるべきです。

一般的に、互いにアクセスするUserControlsはと直接的にはがdesginの匂いに対する強いヒントであると思います。具体的なシナリオ(Mediator、Eventaggregator、Controller、または親コントロールのみ)に対して、より良いアプローチがある可能性が非常に高いです。

+0

実際には他のUserControlをどのように参照するのですか? FindControlを使用する必要がありますか? –

+0

すべてのUserControlが自分自身を登録するセントラル(シングルトン)インスタンスを持つことができます。しかし、それでも、UserControlsがお互いに直接アクセスすると悪い習慣になる傾向があります。 – bitbonk

0

作成する代理人を使用して5つのエンティティを通信できます。

0

私はあなたのプロジェクト要件に従ってドメインモデルを決定し、次にあなたのモデルのエンティティを表すクラスを作成する必要があると思います。次に、必要に応じてこのエンティティのオブジェクトを渡します。

0

イベントを使用する方法は数多くあります。 「直接」メソッドはありません。値をフォームまたはモデルクラスにルーティングする必要があります。

MVVMは、さまざまなコントロール、データベース、Webサービス、計算などの間で一元的にやりとりするMVVM(googleだけ)というパターンがあります.MVVMはさまざまなコントロール間の通信パターンではなく、はるかに大きなパターンですが、その部分も解決します。