我试图让TabControl显示来自两个不同类别/ viewmodels的持有数据。基于这两个资源,WPF MahApps.Metro Tabcontrol data bound?和DataTemplates aren't applied,我尝试了下面的方法,因为它给出了一个编译错误,所以不能完全切割。TabControl中的MahApps.Metro多视图模型
<TabControl ItemsSource="{Binding Collection}">
<TabControl.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Title}" />
</DataTemplate>
</TabControl.ItemTemplate>
<TabControl.ContentTemplate>
<DataTemplate DataType="{x:Type viewModels:SubViewModelAlpha}">
<TextBlock>SubViewModelAlpha</TextBlock>
</DataTemplate>
<DataTemplate DataType="{x:Type viewModels:SubViewModelBeta}">
<TextBlock>SubViewModelBeta</TextBlock>
</DataTemplate>
</TabControl.ContentTemplate>
</TabControl>
我有相应的类:
public class ViewModel {
public string Title { get; set; }
}
public class SubViewModelAlpha : ViewModel { }
public class SubViewModelBeta : ViewModel { }
// In another class, I have this property ...
public ObservableColletion<ViewModel> Collection {
get { return _collection; }
}
// ... and this list
private ObservableColletion<ViewModel> _collection;
我得到的错误是“属性的ContentTemplate设置不止一次”,哪一种是有意义的,但我怎么可以将相同类型的在设置ContentTemplate之前检查一种ViewModel?
我已经尝试在ContentTemplate上使用DataType
但这不起作用。
PS!我当然需要在每个视图模型中有更多的数据,但是这个例子显示了我想要实现的内容的要点。
我知道了,这就是为什么我问如何根据物品来源的类型区分 – holroy
我更新了答案 – bigworld12
如何?那个tenplate需要引用两个不同的viewModels? – holroy