在开始使用带有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();
}
}
}
答案 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?