我尝试在这里使用由Laurent提供的iOS上统一API的dll:
并且有一些问题。我不知道这是一个新的bug还是我做错了什么。
1)我尝试将ViewModel的属性绑定到UI的属性:
_binding = this.SetBinding(() => ViewModel.IsLoading, () => _myView.IsLoading);
myView
是ViewController.View
的自定义子视图。
但是在运行应用程序时,我收到以下错误:
System.InvalidOperationException: Property not found: IsLoading
2)由于第一个片段不起作用,我尝试了以下
_binding = this.SetBinding(() => ViewModel.IsLoading).WhenSourceChanges(
() => _myView.IsLoading = ViewModel.IsLoading);
它运作正常。但是当我使用List<T>
属性做类似的事情时,我收到了很多WhenSourceChanges
个事件,并且UI更新了很多次。这不是最佳的。
如果我正在从我的ViewModel收听PropertyChanged
个事件,我只会获得一个列表更新。因此,似乎WM没有问题。
答案 0 :(得分:1)
据我所知,这是一个反思问题。将字段_myView
更改为属性应该可以解决此问题。例如:
private UIView MyView {
get {
return _myView;
}
}
然后像这样绑定:
_binding = this.SetBinding(() => ViewModel.IsLoading, () => MyView.IsLoading);
您也可以使用其中一种不使用表达式的扩展方法来创建绑定。