Код: Выделить всё
public partial class TabItemView : UserControl
{
public TabItemView()
{
InitializeComponent();
MainViewModel myModel= new MainViewModel();
this.DataContext = myModel;
}
}
Код: Выделить всё
public partial class MainWindow2 : Window
{
//Constructor and some other stuff
.....
private void AddInvoice_Click(object sender, RoutedEventArgs e)
{
count++;
string s = string.Format("Tab {0}", count);
mainViewModel.Items.Add(new ItemViewModel(s));
this.DataContext = mainViewModel;
}
}
Код: Выделить всё
public class MainViewModel : ViewModelBase
{
private ObservableCollection items = new ObservableCollection();
private ObservableCollection invoice_items = new ObservableCollection();
public ObservableCollection Invoice_Items
{
get
{
return invoice_items;
}
set
{
invoice_items = value;
OnPropertyChanged("Invoice_Items");
}
}
public ObservableCollection Items
{
get
{
return items;
}
set
{
items = value;
OnPropertyChanged("Items");
}
}
private int _selectedTabIndex;
public int SelectedTabIndex
{
get { return _selectedTabIndex; }
set { _selectedTabIndex = value; }
}
public MainViewModel()
{
SelectedTabIndex = 0;
}
}
}
Код: Выделить всё
Grid>
Код: Выделить всё
Но когда я устанавливаю DataContext как в MainWindow, так и в TabItemView (как в коде, который я добавил), чтобы уведомить мою Invoice_Item ObservableCollection об изменениях в DataGrid, мой DataContext для обеих ObservableCollection теряется, они больше не уведомляются об изменениях. Когда я добавляю новую вкладку, она дублирует данные, которые я добавил в предыдущие вкладки как в TextBox, так и в DataGrid.
Кроме того, когда я не устанавливаю DataContext в MainWindow и устанавливаю его только в TabItemView, мой ObservableCollection Invoice_Items получает уведомление об изменениях в DataGrid, но когда я добавляю новую вкладку, Данные DataGrid просто дублируются в каждой добавленной вкладке.
Почему это происходит, что я делаю не так? И как я могу решить эти проблемы?
Если вам нужно больше кода или информации, просто скажите. Я ищу любую помощь в понимании того, как решить мою проблему. Спасибо за ответы.