Не удается подключить представление из-за контекста данных (WPF)

#c# #wpf #mvvm #data-binding #view

#c# #wpf #mvvm #привязка данных #Вид

Вопрос:

Итак, моя проблема в том, что изначально я получил следующий код в своем классе MainWindow.xaml

 <Button Margin="10,20,10,10" Height="37" Command="{Binding AddCmd}">View all customers</Button>
....
<TabControl x:Name="myTabs" ItemsSource="{Binding WorkSpaces}" Height="323">
                            <TabControl.Resources>
                                <DataTemplate DataType="{x:Type viewmodel:AllCustomersViewModel}">
                                    <views:AllCustomersView/>
                                </DataTemplate>
                            </TabControl.Resources>
                            <TabControl.ItemTemplate>
                                ....
                            </TabControl.ItemTemplate>
                        </TabControl>
  

и в классе MainWindow.xaml.cs у меня есть этот код

 public MainWindow()
        {
            InitializeComponent();
            this.DataContext = new DemoWPFApp.ViewModel.MainWindowViewModel();
            myTabs.DataContext = this.DataContext; //that is where the problem is
        }
  

Итак, в основном я хочу, чтобы, когда я нажимаю кнопку «Просмотреть всех клиентов», она добавит новую AllCustomerViewModel в список рабочих пространств и отобразит AllCustomerView на экране.
Однако я не могу этого сделать. НО когда я удаляю строку «myTabs.DataContext = this.DataContext;» в классе MainWindow.xaml.cs это работает!
Может кто-нибудь объяснить мне, почему? Потому что я уже установил для своего контекста данных AllCustomerView значение AllCustomerViewModel . И я не могу понять, почему эта строка является проблемой моего приложения.
Спасибо.

Комментарии:

1. Предполагая, что myTabs это элемент в визуальном дереве MainWindow, назначение myTabs.DataContext = this.DataContext; кажется бесполезным в первую очередь. Значение свойства DataContext по умолчанию наследуется всеми дочерними элементами.

2. Я понимаю. Сначала я добавлял их для целей отладки.