#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. Я понимаю. Сначала я добавлял их для целей отладки.