1

ビューモデルと、このビューモデルからのデータを表示するユーザーコントロールを備えたアプリケーションを作成しています。ビューモデルにはエンティティ「Appointment」が含まれ、それらのアポイントメントにはプロパティ「UserName」があります。

アポイントメントを表示するときに、値コンバーターを使用してユーザーの色を取得したいのですが(「UserName」に応じて)、色はエンティティ「Appointment」に含まれていないため、値を作成したかった-ビューモデルのエンティティ「User」を使用するコンバーター。

コンバーター内のビューモデルから別のエンティティを使用するための最良の方法は何ですか?

ユーザーコントロールからビューモデルにアクセスすることは可能ですか?コンバーターをviewmodel-class内に配置しようとしましたが、ユーザーコントロールからこのクラスにアクセスできますか?

次の可能性が機能する可能性があることがわかりました。

  1. 各予定に色も含まれるようにビューモデルを調整します。しかし、ビューモデルをいじりたくないので、これはしたくありません。

  2. 起動時にビューモデルも含むクラスからconverter-parameterを設定します。(これは機能しますか?)

  3. x:Referenceを使用して、コンバーターパラメーターをコンパイル時に不明なビューモデルにデータバインドします(これは可能ですか?)

4

2 に答える 2

2

コンバーターパラメータは行く方法です。

コンパイル時にビューモデルが不明なのはなぜですか?とにかく、バインディングはコンパイル時にチェックされません。

UserControl.DataContextがAppointmentのインスタンスに設定されている場合、UserControlでDataContextとして設定しているものに応じて、パラメーターを{BindingUserName}または{BindingAppointment.UserName}に設定できるはずです。

于 2011-02-24T11:09:16.733 に答える
1

ビューモデルを変更することへの抵抗を再検討することをお勧めします。そもそもビューモデルを持つ目的は、ビューに必要なすべてのものを1か所で見つけることができるようにすることです。ビューモデルの変更を防ぐために精巧な値コンバーターを考え出すことは、実行するほど保守が困難になるアプローチです。

于 2011-02-24T16:19:37.033 に答える