数日前、私はこの質問をしましたが、答えは私をさらに混乱させました。だから私はもっと簡単な質問をします:
(私はCaliburn.Microを使用しています。これはWPFアプリです)。子としてAView/AViewModelとBView/BViewModelを持つMainView/MainViewModelがあるとします。MainViewはグリッドであり、ユーザーの選択に応じて、AViewまたはBViewのいずれかを入力するセルの1つです。AViewのみを表示したい場合は、次のようにします。
MainViewの場合:
<StackPanel Name="SP_Controls" VerticalAlignment="Bottom" Grid.Row="1" Grid.Column="0">
<ContentControl Name="ViewModelToShow" Margin="10" />
</StackPanel>
およびMainViewModel内:
public AViewModel ViewModelToShow{get; set;}
私の素朴なアイデアは、次のようなことをすることです。
private AViewModel _AVM;
private BViewModel _BVM;
public ... ViewModelToShow{ get; set;}
次に、コードで、たとえば、viewmodelを次のように設定します。
ViewModelToShow = _BVM;
各ViewModelは異なるクラスであるため、私の唯一の問題は「...」です。ジェネリックでこれを行う方法はありますか、それともキャスト先のViewModelの基本クラスを定義する必要がありますか?しかし、そうしても、正しく表示されますか?ありがとう。