Передача данных между TabItem (WPF, C#, MVVM)
Всем добрый день.
Ситуация следующая. Есть окно, в нём две вкладки. В первой вкладке (вкладка ААА) у меня есть место для ввода текста и кнопка ОК. Во второй вкладке (вкладка ВВВ) также есть место для ввода текста, но оно заблокировано для ввода.
Необходимо сделать так, чтобы данные введёные во вкладке ААА, после нажатия кнопки ОК отобразились в текстовом поле вкладки ВВВ. Как это сделать не нарушая принципов MVVM ?
Код программы ниже:
XAML код окна:
<Grid>
<TabControl>
<TabItem Header="AAA">
<TabItem.DataContext>
<aaaViewModel:AAAViewModel/>
</TabItem.DataContext>
<StackPanel Orientation="Horizontal" VerticalAlignment="Center" HorizontalAlignment="Center">
<Label Content="User Name"/>
<TextBox HorizontalAlignment="Center" VerticalAlignment="Center" Margin="15,0,0,0" Width="50" Text="{Binding AAAUserName}"/>
<Button Content="OK" Margin="15,0,0,0" Command="{Binding ClickOK}"/>
</StackPanel>
</TabItem>
<TabItem Header="BBB">
<TabItem.DataContext>
<bbbViewModel:BBBViewModel/>
</TabItem.DataContext>
<StackPanel Orientation="Horizontal" VerticalAlignment="Center" HorizontalAlignment="Center">
<Label Content="User Name"/>
<TextBox HorizontalAlignment="Center" VerticalAlignment="Center" Margin="15,0,0,0" Width="50" Text="{Binding BBBUserName}" IsEnabled="False"/>
</StackPanel>
</TabItem>
</TabControl>
</Grid>
Есть два файла ViewModel
AAAViewModel
```
namespace TabControlTestMVVM.AAAViewModel
{
class AAAViewModel : INotifyPropertyChanged
{
public static User AAA_User { get; set; } = new User();
public string AAAUserName { get; set; }
public ICommand ClickOK
{
get
{
return new DelegateCommand((p) =>
{
AAA_User.Name = AAAUserName;
BBBViewModel.BBBViewModel.BBB_User.Name = AAAUserName;
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("AAAUserName"));
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("AAA_User"));
},
(p) =>
{
return true;
});
}
}
public event PropertyChangedEventHandler PropertyChanged;
}
}
```
BBBViewModel
namespace TabControlTestMVVM.BBBViewModel
{
class BBBViewModel
{
public static User BBB_User { get; set; } = new User();
public string BBBUserName { get; set; } = BBB_User.Name;
}
}
И есть один файл Model
namespace TabControlTestMVVM.Model
{
class User
{
public string Name { get; set; }
}
}