我知道,topic discussed多times https://jsfiddle.net/ffsojvw4/,所以直截了当。
这是ItemsSource
的{{1}}:
TabControl
这是Tabs = new ObservableCollection<aTabViewModel>
{
new HomeViewModel(),
new StatisticsViewModel()
};
本身
TabControl
<TabControl ItemsSource="{Binding Tabs}">
<TabControl.Resources>
<DataTemplate DataType="{x:Type pagesVM:HomeViewModel}">
<pages:Home/>
</DataTemplate>
<DataTemplate DataType="{x:Type pagesVM:StatisticsViewModel}">
<pages:Statistics/>
</DataTemplate>
</TabControl.Resources>
<TabControl.ItemContainerStyle>
<Style BasedOn="{StaticResource MetroTabItem}" TargetType="TabItem">
<Setter Property="Header" Value="{Binding Header}" />
</Style>
</TabControl.ItemContainerStyle>
和HomeViewModel
在我们将它们添加到StatisticsViewModel
集合时首次实例化,第二次在我们选择应用程序中的tab时实例化(这似乎是{的行为{1}})。而这种双重装载显然是不对的。
问:如何在选中时加载标签?