0
我試圖使用TabControl來顯示多個視圖,但我很困惑,正確設置DataContext的視圖。我在幾次討論中發現DataContext(這裏是TemplateViewModel)會自動設置爲視圖(這裏是TemplateView),但這對我不起作用。WPF MVVM TabControl DataContext爲null
主窗口:
<TabControl Grid.Row="1" ItemsSource="{Binding Tabs}" SelectedIndex="{Binding SelectedTab}">
<TabControl.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding TabName}"/>
</DataTemplate>
</TabControl.ItemTemplate>
<TabControl.ContentTemplate>
<DataTemplate DataType="{x:Type models:TemplateViewModel}">
<views:TemplateView />
</DataTemplate>
</TabControl.ContentTemplate>
</TabControl>
MainWindowViewModel:
private ObservableCollection<ViewModelBase> _tabs;
public ObservableCollection<ViewModelBase> Tabs
{
get { return _tabs; }
set { SetValue(ref _tabs, value, "Tabs"); }
}
public SomeEvent()
{
TemplateViewModel model = new TemplateViewModel();
model.TabName = value;
Tabs.Add(model);
SelectedTab = Tabs.IndexOf(model);
}
在 'SomeEvent',我創建了一個新的TemplateViewModel並將其添加到類型的ObservableCollection的標籤集合。在MainView上顯示帶有正確tabname和TemplateView的新選項卡。問題是,如果我嘗試在TemplateView構造函數中獲取DataContext,則上下文爲空。任何想法?
public TemplateView()
{
InitializeComponent();
TemplateViewModel model = (TemplateViewModel)DataContext;
}
謝謝快速答覆。在MainWindow中,我已經在你寫的時候設置了DataContext,這應該不是問題。 – user2377283 2013-05-13 11:05:31
嗨,亞當,還有其他想法嗎?謝謝 – user2377283 2013-05-13 15:11:34