【发布时间】:2015-01-29 08:31:37
【问题描述】:
我在这里尝试使用 Laurent 提供的 iOS 上统一 API 的 dll:
还有一些问题。我不知道这是否是一个新错误,或者我做错了什么。
1) 我尝试将 ViewModel 的属性绑定到 UI 的属性:
_binding = this.SetBinding(() => ViewModel.IsLoading, () => _myView.IsLoading);
myView 是ViewController.View 的自定义子视图。
但在运行应用程序时,我收到以下错误:
System.InvalidOperationException: Property not found: IsLoading
2)由于第一个sn-p不起作用,我尝试了以下
_binding = this.SetBinding(() => ViewModel.IsLoading).WhenSourceChanges(
() => _myView.IsLoading = ViewModel.IsLoading);
它工作正常。但是,当我对 List<T> 的属性执行类似操作时,我会收到很多 WhenSourceChanges 事件,并且 UI 会更新太多次。这不是很理想。
如果我正在从我的 ViewModel 收听 PropertyChanged 事件,我只会得到列表的一次更新。因此,WM 似乎没有问题。
【问题讨论】:
-
此错误表示无法通过 _myView 上的反射找到 IsLoading 属性。我怀疑这与 _myView 元素的可见性有关。你能告诉我你是如何声明这个元素的,我会尝试重现。
-
没什么复杂的:
private bool _isLoading; public bool IsLoading { get { return _isLoading; } set { _isLoading = value; } }我也尝试过使用受保护的或自动的 getter/setter。还是一样的例外。 -
我也尝试更改 _myView 属性的可见性(公共/受保护,...),但仍然有异常
-
好的,感谢您的更新。我会尝试重现。
-
顺便说一句,WhenSourceChanges 调用过多的问题应在最新版本 (V5.1) 中修复
标签: c# ios xamarin.ios xamarin mvvm-light