このMVVMのものは頭が痛いです。私は左ペインにエディタのリストを持つアプリケーションを持っています。右側には、エディタが表示されるタブコントロールがあります。私はビューモデルのコレクションを含むメインのアプリケーションビューモデルを持っています。私はこのコレクションをワークスペースと呼んでいます。これは、Microsoftが提供するMvvmDemoAppから借用されたhereです。実行時にビュー/ビューモデルのデータテンプレートを設定するにはどうすればよいですか?
public ObservableCollection<WorkspaceViewModel> Workspaces
{
get
{
...
}
}
これらのワークスペースはそれほどのようなメインアプリケーションウィンドウにタブコントロールにバインドされていますビューモデルはそうのようなDataTemplatesを使用して、ビューに関連付けられている
<DataTemplate x:Key "WorkspacesTemplate">
<TabControl
IsSynchonizedWithCurrentItem="True"
ItemSource="{Binding Workspaces}"
SelectedItem="{Binding ActiveWorkspace}"/>
</DataTemplate>
...
<ContentControl
Content="{Binding}"
ContentTemplate="{StaticResource WorkspacesTemplate}"/>
:
<DataTemplate DataType="{x:Type vm:MessageLogViewModel}">
<vw:MessageLogView/>
</DataTemplate>
これは正常に動作します。しかし、今では、エディタのリストが設定ファイルから読み込まれる場所で、アプリケーションを設定できるようにする必要があります。この設定ファイルには、各エディタのビューとモデルコンポーネントが含まれていると思います。しかし、ビューモデル(またはビューモデルのコレクション)にバインドするときに、正しいビューが表示されるように(DataTemplateの機能に似ていますが、XAMLではなくコード内にあるように)、2つの方法を組み合わせる方法を教えてください。
私はInversion of Control(IoC)技術を離れようとしています。私たちのチームがそれほど洗練されていなければならないとは思えません。
:プロパティは、の線に沿って、XAMLを作成する必要があります。
その後にバインドする
ContentControl
を使うのか?誰がデータテンプレートプロパティにバインドするのですか? – bsh152s@ bsh152s:編集があなたにもう少しポインタを与えることを願っています。 –