我試圖讓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