2016-09-07 12 views
0

WPFでスケジューラのカスタムコントロールを作成したいと思います。また、私はこの コントロールが汎用であることを望みます。例えば、スケジューラはノート、ワーカー、ミーティングなどのイベントを保存することができます。WPFで必要なクラスのインスタンスを取得するには?

したがって、IContractにはSaveEvent()、EditEventメソッド。 すべての特定のクラス(注:Meeting ...)は、そのインターフェイスを実装する必要があります。 それゆえ、スケジューラのビューモデルでイベントを保存したい場合は、インターフェイス経由でそれを行います。

しかし、問題があり、どのように私はこのinstace( "契約")スケジューラビューモデルに

IContract contract = new Meeting(); 

を渡すことができますか? instanaceを得る反射を経てスケジューラビューモデルで<local:Scheduler instanceClass="Meeting"/> とより:私のカスタムコントロールを使用します誰かがちょうど今、私はこのような何かを行うことができますいくつかのXAML

<local:Scheduler/> 

にコードのこの平和を入れます。それは良い解決策ですか?

別の方法がありますか?

+0

あなたの質問の「一般的な」とは、「コントロールはジェネリック型になります」という意味であれば、それをしないでください。 WPFインフラストラクチャはこれをうまく処理できません。 – Dennis

答えて

2

おそらく、使用するインスタンスを手動で設定するビューモデルクラスを別の場所に作成したいとします。そのインスタンスをビューにバインドします。このような

何か:

<local:Scheduler DataContext="{Binding Event}"/> 

オプションで、結合のためにDataContextよりも、別のプロパティを作成することができます。

+0

私は私が理解していないと確信しています。私はScheduler.xamlを持っています。ビューにはいくつかのカレンダー、次、前のボタンなどがあります。 そのビューのViewModelはSchedulerViewModelクラスです。カレンダーの現在の日付に関する情報を保持し、ボタンのコマンドを実装します。 あなたのソリューションは私のビューを変更しますモデル?私はこれをすることはできません。また、カスタムコントロールは、このコントロールの顧客が手動でSchedulerViewModelでインスタンスを設定する方法を一般的にする必要があるため?私はかなり確信しています 私は何か悪いことを理解しているので、もう一度説明することができますか? – gzsun

+0

私は今あなたが言うことを理解しており、それが解決策になります。ありがとうございました。 – gzsun

+0

申し訳ありませんが、以前はあなたのコメントに答える時間がありませんでした。何かが必要な場合は、私に知らせてください。 –

関連する問題