Mvvmlight和Xamarin Unified API:找不到属性

时间:2015-01-29 08:31:37

标签: c# ios xamarin.ios xamarin mvvm-light

我尝试在这里使用由Laurent提供的iOS上统一API的dll:

http://blog.galasoft.ch/posts/2015/01/porting-mvvmlight-to-the-xamarin-ios-unified-api-64-bits/#respond

并且有一些问题。我不知道这是一个新的bug还是我做错了什么。

1)我尝试将ViewModel的属性绑定到UI的属性:

_binding = this.SetBinding(() => ViewModel.IsLoading, () => _myView.IsLoading);

myViewViewController.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没有问题。

1 个答案:

答案 0 :(得分:1)

据我所知,这是一个反思问题。将字段_myView更改为属性应该可以解决此问题。例如:

private UIView MyView {
    get {
        return _myView;
    }
}

然后像这样绑定:

_binding = this.SetBinding(() => ViewModel.IsLoading, () => MyView.IsLoading);

您也可以使用其中一种不使用表达式的扩展方法来创建绑定。