Я использую ViewModelLocator в своем проекте.Xamarin Forms доступ ко всем моделям просмотра
я BindingContent из ViewModelLocator в ResourceDictionary внутри app.xaml
Мои коды:
app.xaml
<?xml version="1.0" encoding="utf-8" ?>
<Application xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:controlsHelpers="clr-namespace:MyProj.Source.Helpers.UIHelper.ControlsHelpers;assembly=MyProj"
xmlns:configuration="clr-namespace:MyProj.Source.Configuration;assembly=MyProj"
x:Class="MyProj.App">
<Application.Resources>
<ResourceDictionary>
<configuration:ViewModelLocator x:Key="ViewModelLocator"/>
</ResourceDictionary>
</Application.Resources>
</Application>
ViewModelLocator.cs
public class ViewModelLocator
{
public LoginViewModel LoginViewModel { get; set; }
public SignUpViewModel SignUpViewModel { get; set; }
public ViewModelLocator()
{
LoginViewModel = new LoginViewModel();
SignUpViewModel = new SignUpViewModel();
}
}
LoginViewModel.cs
public class LoginViewModel : AbstractViewModel
{
private MyModel UserData { get; set; } = new MyModel();
private bool _isSignRequired;
public bool IsSignRequired
{
get { return _isSignRequired; }
set
{
if (value == _isSignRequired) return;
_isSignRequired = value;
OnPropertyChanged();
}
}
public string UserName
{
get { return UserData.UserName; }
set
{
if (value == UserData.UserName) return;
UserData.UserName = value;
OnPropertyChanged();
}
}
public string Password
{
get { return UserData.Password; }
set
{
if (value == UserData.Password) return;
UserData.Password = value;
OnPropertyChanged();
}
}
}
SignUpViewModel.cs
public class SignUpViewModel : AbstractViewModel
{
private string _checkUserResultImage;
public MyModel UserData { get; set; } = new MyModel();
public string Phone
{
get { return UserData.Phone; }
set
{
if (UserData.Phone != null && value == UserData.Phone) return;
UserData.Phone = value;
OnPropertyChanged();
}
}
public string UserName
{
get { return UserData.UserName; }
set
{
if (UserData.UserName != null && value == UserData.UserName) return;
UserData.UserName = value;
OnPropertyChanged();
}
}
public string Password
{
get { return UserData.Password; }
set
{
if (UserData.Password != null && value == UserData.Password) return;
UserData.Password = value;
OnPropertyChanged();
}
}
public string Email
{
get { return UserData.Email; }
set
{
if (UserData.Email != null && value == UserData.Email) return;
UserData.Email = value;
OnPropertyChanged();
}
}
public string CheckUserResultImage
{
get { return _checkUserResultImage; }
set
{
if (value == _checkUserResultImage) return;
_checkUserResultImage = value;
OnPropertyChanged();
}
}
public Command SignUpCommand
{
get
{
return new Command(async() =>
{
//Here I want to get data field from LoginViewModel
});
}
}
}
Я хочу, чтобы получить данные из LoginViewModel в SignUpViewModel.
Как я могу это сделать?
добавить код для SignUpViewModel –
add LoginViewModel тоже. –
@santoshkumar сделано – Atlantis