'm試圖創建一個包含多個項目的tabcontrol的主窗口(每個項目僅在需求時顯示)...假設我們有類型A的項目,類型B的項目和項目的類型C 我想(使用MVVM模式)有一個可觀察的對象集合代表我的tabitems,並與我的userscontrols(每個tabitem是一個用戶控件)... 問題是,我沒有數字瞭解如何去做。將TabControl綁定到具有不同內容的ObservableCollection
我一個tabItemViewModelBase類:
public class TabItemViewModelBase : ViewModelBase
{
//Fields :
RelayCommand _closeCommand;
//Constructor:
public TabViewModel(string header)
{
this.Header = header;
}
}
在我的主窗口數據上下文
,我這個類的一個觀察的集合:
//Propriétés
ObservableCollection<TabViewModel> _tabItems;
在我的主窗口我已經下面的標籤爲TabControl項目
<TabControl Padding="0" ItemsSource="{Binding Path=Workspaces}">
<TabControl.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Header}"/>
</DataTemplate>
</TabControl.ItemTemplate>
<TabControl.ContentTemplate>
<DataTemplate>
**<view:ClientView/>**
</DataTemplate>
</TabControl.ContentTemplate>
</TabControl>
但正如您所看到的,所有項目都附加到ClientV用戶控件和我使用tabviewitem創建我的項目,我需要一個屬性或方式來指定每個元素的observablecollection的內容形式...
(我有一個ClientListingViewModel類和ClientCreationViewModel類),我不能同時使用,因爲我不知道如何爲每個人指定視圖!
謝謝!
小型通知 - 這是更好地把你的DataTempalates聲明在App.xaml中,或以任何資源文件合併在App.xaml中。它應該爲你節省一些內存(特別是在用戶控制的情況下)。 – Woodman 2013-02-21 12:17:21
問題是viewModel部分位於另一個庫上,當我嘗試在XML文件中引用它時,我無法訪問所有ViewModel類(要做{x:Type vm:ClientListingViewModel) – Mohtaa 2013-02-21 13:32:21
我已經訪問我的viewModel – Mohtaa 2013-02-21 13:36:30