使用 Xamarin Forms 的 SetBinding 异常

SetBinding exception using Xamarin Forms

开始使用带有 MVVM 实现的 Xamarin 表单时,我陷入了这个异常

未找到方法:'Xamarin.Forms.BindableObjectExtensions.SetBinding'。 它在 var mainNav = new MainPage ()

行失败
public static Page GetMainPage ()
{   
    RegisterTypes ();
    var mainNav = new MainPage ();

    return mainNav;
}

这是我的代码,为了简单起见,我删除了不相关的代码。如您所见,这是非常基本的,我知道我一定犯了一些非常基本的错误,但就是想不通。 提前致谢....

查看

public class MainPage :ContentPage
{
    public  MainPage ()
    {
        BindingContext = new MainPageViewModel ();
        var nameEntry = new Entry ();
        nameEntry.SetBinding (Entry.TextProperty, "Name");

        Content = new StackLayout
        {
            Spacing = 12,
            Padding = 20,
            VerticalOptions = LayoutOptions.Start,
            Children = { nameEntry }
        };
    }
}

ViewModel

public class MainPageViewModel:BaseViewModel
{
    private string _name;
    public string Name
    {
        get 
        { 
            return _name; 
        }
        set 
        {
            _name = value;
            OnPropertyChanged();
        }
    }
}

我在一个新项目 (Xamarin 3.9) 中尝试了您的确切代码,它工作正常(我只测试了 Android)。

我省略了 GetMainPage() 中的 RegisterTypes() 并实现了 BaseViewModel 如下:

public class BaseViewModel : INotifyPropertyChanged
{
  public event PropertyChangedEventHandler PropertyChanged;

  protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
  {
    PropertyChangedEventHandler handler = PropertyChanged;
    if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName));
  }
}

也许您只需要更新 Xamarin?