0
TabControl을 사용하여 여러 뷰를 표시하려고했지만 뷰에 대한 DataContext의 올바른 설정이 혼동 스럽습니다. DataContext (여기 TemplateViewModel) 자동으로보기 (여기 TemplateView) 설정됩니다 여러 토론에서 발견하지만,이 나를 위해 작동 dosen't.WPF MVVM TabControl DataContext가 null입니다.
MainWindow를 :
<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 : 'SomeEvent'에
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);
}
, 나는 새로운 TemplateViewModel을 만들고 형 ObservableCollection에의 탭 컬렉션에 추가합니다. 올바른 tabname과 TemplateView가있는 새 탭이 MainView에 표시됩니다. 문제는 TemplateView 생성자에서 DataContext를 가져 오려고하면 컨텍스트가 비어 있다는 것입니다. 어떤 생각?
public TemplateView()
{
InitializeComponent();
TemplateViewModel model = (TemplateViewModel)DataContext;
}
감사를 추가합니다. MainWindow에서 나는 당신이 쓴 것처럼 이미 DataContext를 설정했다. 그것은 문제가되어서는 안된다. – user2377283
안녕하세요, 아담, 다른 아이디어가 있습니까? 감사 – user2377283