2017-06-05 9 views
0

クラスを使用してエントリタグ/ビューからビューモデルにバインドする方法に関する質問があります。私はビューモデルクラスに行くデータを送信しようとするたびにnull値を持っています。ここXamarinのビューモデルからビューモデルへのデータバインド方法は?

は、ビューのコードである:ここ

Entry Text="{Binding User.UserName, Mode=TwoWay}"/> 
<Entry Text="{Binding User.Password, Mode=TwoWay}"/> 

<Button Text="Login" Command="{Binding LoginCommand}"/> 

は、ビューモデル(コンストラクタ部分)のためのコードである:ビューモデルで

public LoginPageViewModel(IApiService apiService, INavigationService navigationService) 
    { 
     this.apiService = apiService; 
     this.navigationService = navigationService; 
     LoginCommand = new DelegateCommand(Login); 
    } 

、私ものクラスを持っていますそれはユーザーのモデルを使用して、ユーザー名とパスワード:

private Users user; 
    public Users User 
    { 
     get { return user; } 
     set { SetProperty(ref user, value); } 
    } 

ここでは、ユーザーのためのモデルである:

public class Users : BindableObject 
{ 
    private string username; 

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

    private string password; 

    public string Password 
    { 
     get { return password; } 
     set { password = value; } 
    } 

} 

送信ボタンを押すたびに、コードをデバッグしようとするとnull値が返されます。

private async void Login() 
    { 
     var test = User.UserName; 

     bool success = await apiService.LoginAsync(User); 

私のXamarinプロジェクトにご協力いただきありがとうございます。

+0

LoginViewModelを作成すると、Userの新しいインスタンスがインスタンス化されるか、それともnullですか? – Jason

+0

@Jasonそれはちょうどヌル値です。 – jololandayan

答えて

1

viewmodelコンストラクタでUserの新しいインスタンスを作成する必要があります。

public LoginPageViewModel(IApiService apiService, INavigationService navigationService) 
    { 
     this.apiService = apiService; 
     this.navigationService = navigationService; 
     LoginCommand = new DelegateCommand(Login); 

     this.User = new Users(); 
    } 
+0

ありがとうございます。あなたはこれのための例を掲載できますか? – jololandayan

+0

ありがとう@ジェイソンと@ディエゴ!ブリリアント! – jololandayan

関連する問題