使用 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?
开始使用带有 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?