Передача значений между классами и страницами с использованием привязки данных в формах xamarin - PullRequest
0 голосов
/ 11 февраля 2019

Я хочу передать значения из класса ViewModel в модель, а затем я хочу связать значения класса модели со страницей, которая является страницей сведений главной страницы сведений о мастере. Я хочу показать имя пользователя и адрес электронной почты после успешного входа в систему. Каждыйвсе работает нормально, но имя пользователя и адрес электронной почты не отображаются на домашней странице.Это моя модель класса

 public class User
    {
    private string name;
    private string email;
    public  string Email

            {
                get { return email; }
                set { email = value; }
            }
    public  string UserName

            {
                get { return name; }
                set { name = value; }
            }
    }

вот моя модель представления

      public class LoginVM
        {
User user;
         public async void Login()
                {
//the _user store Email,UserName and Password after calling GetEmployeePassword()
                     var _user = await azureServices.GetEmployeePassword(Employees.Email,Employees. Password);
                    if (_user != null)
                    {
                        if (_user.Email == Employees.Email && _user.Password == Employees.Password)
                        {
                             await App.Current.MainPage.DisplayAlert("success", "Login success", "OK");

        //passing Email and User Name to User Model
    //Here is my Problem
                            user = new User()
                            {
                                Email = _user.Email,
                            UserName=_user.UserName
                            };


                            var masterDetailPage = new MasterDetailPage1();

                            masterDetailPage.Master = new MasterDetailPage1Master();
                             masterDetailPage.Detail = new NavigationPage(new Page1());
                            Application.Current.MainPage = masterDetailPage;
                        }
                        else
                            await App.Current.MainPage.DisplayAlert("Error", "Login fail", "OK");
                    }

        }

это страница1 (домашняя страница) Xml

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="MyProject.Views.Profile.Page1"
 Title="Home" >

                <StackLayout Margin="5,30,5,5">
        <Entry x:Name="UsernameEntery" Text="{Binding Username, Mode=TwoWay}" Placeholder="UserName"/>
        <Entry x:Name="EmailEntry" Text="{Binding Email, Mode=TwoWay}" Placeholder="Email"/>
    </StackLayout>

</ContentPage>

Page1 CS

public partial class Page1:ContentPage
    {
        User user;
        public Page1 ()
        {
            InitializeComponent ();
            BindingContext = user= new User();
        }
    }

Пожалуйста, помогите мне, если кто-нибудь поймет, что я хочу. Я дам больше информации, если кому-то понадобится

1 Ответ

0 голосов
/ 11 февраля 2019

сначала вам нужно передать объект User при создании вашей страницы

masterDetailPage.Detail = new NavigationPage(new Page1(user));

, а затем на своей странице установить BindingContext

public partial class Page1:ContentPage
{
    User _user;
    public Page1 (User user)
    {
        InitializeComponent ();
        BindingContext = _user = user;
    }
}
...