2016-04-08 4 views
0

Возможно ли изменить свойство viewmodel из вида? Я попробовал свободно связыванием, но ViewModel свойство всегда нульMvvmCross bind Viewmodel свойство для просмотра свойства

Посмотреть

public class UserProfileView : MvxActivity 
{ 

    private string _currentToken; 
    public string CurrentToken { get; set; } 
    protected override void OnCreate(Bundle bundle) 
    { 
     var accounts = AccountStore.Create(this).FindAccountsForService("Soundcloud").ToList(); 
     var set = this.CreateBindingSet<UserProfileView, UserProfileViewModel>(); 
     set.Bind(this).For(v => v.CurrentToken).To(vm => vm.UserToken).TwoWay(); 
     set.Apply(); 
     accounts.ForEach(account => 
     { 
      CurrentToken = account.Properties["access_token"]; 
     }); 
     base.OnCreate(bundle); 
     SetContentView(Resource.Layout.UsrProfile); 
    } 
} 

ModelView

private string _userToken; 
    public string UserToken 
    { 
     get { return _userToken;} 
     set { _userToken = value; RaisePropertyChanged("UserToken"); Update();} 
    } 
+0

Я бы пошел с привязкой (Тибет?) От xml обычно локально: MvxBind = «CurrentToken UserToken» – Nanoc

+0

Он всегда пытается получить UserToken, но мне нужно установить его в ModelView –

+0

Итак, привязка правильная, но значение не в viewModel, в чем проблема? – Nanoc

ответ

2

Проще всего было бы унаследовать от MvxActivity<TViewModel>

public class UserProfileView : MvxActivity<UserProfileViewModel> 

, а затем просто установить

ViewModel.CurrentToken = account.Properties["access_token"]; 

Это отвечает вашим «Можно ли изменить ViewModel свойство с точки зрения?». Но это не использует привязку данных. Если вы действительно хотите использовать привязку данных, вам нужно написать настраиваемое связывание для этого, что может быть слишком большим в этом случае.

+0

Да, это работает. Большое спасибо. –

+0

Я посмотрю после моей сессии CS: GO ^^ –

Смежные вопросы