MVVMに従ってWPFアプリケーションを作成しています。私のアプリケーションで必要なのは、いくつかの一般的なボタンとテキスト ボックスを含むビューと、TabControl
. TabControl は基本的に異なるホストになりますUserControls
。そのため、それぞれUserControl
に別々View
のViewModel
準備ができています。
したがって、私のアプリケーションの構造は次のようになります。
MainWindow.Xaml
EntryView.Xaml
Button1
Button2
TabControl
UserControl1 (View)
UserControl2 (View)
UserControl3 (View)
私のEntryViewの息子には、タブコントロールがあります。これをバインドする必要があります。
これが私がやったことです。
EntryView.Xaml
<TabControl ItemsSource="{Binding Tabs}" SelectedItem="{Binding SelectedTab}">
<TabControl.ContentTemplate>
<DataTemplate DataType="{x:Type vm:UserControl1ViewModel}">
<v:UserControl1View/>
</DataTemplate>
<DataTemplate DataType="{x:Type vm:UserControl2ViewModel}">
<v:UserControl2View/>
</DataTemplate>
</TabControl.ContentTemplate>
<TabControl.ItemTemplate>
<DataTemplate>
<TextBlock Text="Header"/>
</DataTemplate>
</TabControl.ItemTemplate>
</TabControl>
EntryViewModel.cs
private ObservableCollection<BaseViewModel> _tabs;
public ObservableCollection<BaseViewModel> Tabs
{
get
{
if (_tabs == null)
{
_tabs = new ObservableCollection<BaseViewModel>();
_tabs.Add(new UserControl1ViewModel());
_tabs.Add(new UserControl2ViewModel());
}
return _tabs;
}
}
しかし、アプリケーションを実行しても何も起こりません。TabControl が空です。ビューモデルのタブ内にブレークポイントを入れたのですがヒットしませんでした。質問 1 は、これを正しく行っているかどうかです。いいえの場合、どうすればよいですか?