MvvmCross:RaisePropertyChanged 不更新绑定
MvvmCross: RaisePropertyChanged not updating binding
我正在用这样的 ViewModel 实例化一个视图:
var myView = new MyView { DataContext = new MyViewModel() };
我想让这个视图可以从应用程序的任何地方访问,所以我将视图添加到 rootviewcontroller:
window.RootViewController.View.Add(myView.View);
其中 ViewModel 继承自 MvxViewModel,MyView 继承自 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,它工作正常并正常触发。
而不是var myView = new MyView { DataContext = new MyViewModel() };
让 MvvmCross 通过这样做构建您的 MvxViewController:
var viewController = this.CreateViewControllerFor<MyViewModel>();
CreateViewController
是 IMvxCanCreateTouchView
的扩展方法,因此您构建视图的 class 应该实现该接口,否则该方法将不可用。
我知道 IMvxCanCreateTouchView
是由 MvxTouchViewPresenter
和 MvxViewController
实现的,因此您可以从您的 Presenter
或另一个 MxvViewController
调用该方法。
我正在用这样的 ViewModel 实例化一个视图:
var myView = new MyView { DataContext = new MyViewModel() };
我想让这个视图可以从应用程序的任何地方访问,所以我将视图添加到 rootviewcontroller:
window.RootViewController.View.Add(myView.View);
其中 ViewModel 继承自 MvxViewModel,MyView 继承自 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,它工作正常并正常触发。
而不是var myView = new MyView { DataContext = new MyViewModel() };
让 MvvmCross 通过这样做构建您的 MvxViewController:
var viewController = this.CreateViewControllerFor<MyViewModel>();
CreateViewController
是 IMvxCanCreateTouchView
的扩展方法,因此您构建视图的 class 应该实现该接口,否则该方法将不可用。
我知道 IMvxCanCreateTouchView
是由 MvxTouchViewPresenter
和 MvxViewController
实现的,因此您可以从您的 Presenter
或另一个 MxvViewController
调用该方法。