2016-01-21 1 views
0

Я инстанцирование вида с ViewModel, как это:MvvmCross: RaisePropertyChanged не обновляя связывания

var myView = new MyView { DataContext = new MyViewModel() }; 

Я хочу, чтобы этот вид доступен из любого места в приложении, поэтому я добавляющий вид на RootViewController:

window.RootViewController.View.Add(myView.View); 

Где ViewModel наследует от MvxViewModel и MyView inherist от MvxViewController

Внутри MyView я связывании UILabel к тэ х свойство, как этот

this.CreateBinding(myLabel).To<MyViewModel>(vm => vm.MyTextProp).Apply(); 

Текст собственности определяется внутри ViewModel как этот

private string myTextProp; 
    public string MyTextProp 
    { 
     get { return myTextProp; } 
     set 
     { 
      myTextProp = value; 
      RaisePropertyChanged(() => MyTextProp); 
     } 
    } 

связывания работ первоначально при загрузке. Но когда я изменяю свойство MyTextProp, и RaisePropertyChanged называется UILabel, он не обновляется.

Я также привязываюсь к ICommand, который работает нормально и запускается нормально.

ответ

1

Вместо того чтобы делать var myView = new MyView { DataContext = new MyViewModel() };

Пусть MvvmCross построить свой MvxViewController, делая это:

var viewController = this.CreateViewControllerFor<MyViewModel>(); 

CreateViewController является метод расширения для IMvxCanCreateTouchView, так что класс, где вы делаете ваш вид конструкции следует реализации, что Inteface , иначе этот метод не будет доступен.

Я знаю IMvxCanCreateTouchView реализуется MvxTouchViewPresenter и MvxViewController, так что вы можете вызвать этот метод из вашего Presenter или из другого MxvViewController.

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

  • Нет связанных вопросов^_^