我正在制作一个遵循 MVVM 的 WPF 应用程序。我在我的应用程序中想要的是有一个包含一些常用按钮和文本框的视图以及一个TabControl
. TabControl 基本上会承载不同的UserControls
. 所以对于每一个UserControl
我都有一个单独View
的和ViewModel
准备好的。
所以我的应用程序的结构看起来像这样。
MainWindow.Xaml
EntryView.Xaml
Button1
Button2
TabControl
UserControl1 (View)
UserControl2 (View)
UserControl3 (View)
儿子在我的 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>
入口视图模型.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 为空。我在视图模型的选项卡中放置了断点,但它没有被击中。所以问题一个是我这样做对吗?如果没有,我该怎么办?