我想在我的MainView中顯示TabControlItems
中的不同視圖。MVVM將視圖綁定到TabControlItems - 視圖不顯示
要做到這一點,我創建了一個類是這樣的:
public sealed class TabItem
{
public string Header { get; set; }
public ViewModelBase Content { get; set; }
}
那我在List
調用我的視圖模型:
private ObservableCollection<TabItem> _views;
public ObservableCollection<TabItem> Views
{
get { return _views; }
set
{
_views = value;
RaisePropertyChanged(() => Views);
}
}
public IndexMainViewModel()
{
Views = new ObservableCollection<TabItem>();
Views.Add(new TabItem { Header = "Export", Content = new ExportViewModel() });
Views.Add(new TabItem { Header = "Import", Content = new ImportViewModel() });
}
編輯然後在我的視圖中顯示:
<window xmlns:views="clr-namespace:EDICOT_Module_Import_Export_Articles.View"
xmlns:vm="clr-namespace:EDICOT_Module_Import_Export_Articles.ViewModel"
xmlns:model="clr-namespace:EDICOT_Module_Import_Export_Articles.Model.Classes"
DataContext="{Binding IndexMainVM, Source={StaticResource Locator}}">
<TabControl ItemsSource="{Binding Views}">
<TabControl.Resources>
<DataTemplate DataType="{x:Type model:TabItem}">
<DataTemplate.Resources>
<DataTemplate DataType="{x:Type vm:ImportViewModel}">
<views:ImportView />
</DataTemplate>
<DataTemplate DataType="{x:Type vm:ExportViewModel}">
<views:ExportView />
</DataTemplate>
</DataTemplate.Resources>
<ContentControl Content="{Binding Content}"/>
</DataTemplate>
</TabControl.Resources>
<TabControl.ItemTemplate >
<DataTemplate >
<TextBlock Text="{Binding Header}"/>
</DataTemplate>
</TabControl.ItemTemplate>
</TabControl>
問題是,它只顯示標題但不顯示內容(視圖),它顯示的是TabItem類的路徑。
爲了給更多的信息:我截斷了代碼,只保留主題需要的內容,並使用MVVM Light。
我真的不明白我在這裏想念的東西! Thx爲您提供幫助。
編輯代碼工作。 – RizzCandy