使用Xamarin Forms的SetBinding异常

时间:2015-01-10 12:40:58

标签: xamarin 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 }
        };
    }
}

视图模型

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

1 个答案:

答案 0 :(得分:0)

我在一个新项目(Xamarin 3.9)中尝试了您的确切代码,它运行良好(我只测试了Android)。

我从RegisterTypes()中省略了GetMainPage()并按如下方式实现了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?