我有一个简单的 LoginView 和 LoginViewModel 。 首先,这是View的相关代码:
<StackLayout>
<Entry
Text="{Binding Email, Mode=TwoWay}"
/>
...
这是ViewModel:
public class LoginViewModel : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged = delegate { };
private string _email;
public string Email
{
get => _email;
set
{
_email = value;
PropertyChanged(this, new PropertyChangedEventArgs(nameof(Email)));
}
}
...
}
如果我在构造函数中说类似
Email = "abc";
该条目肯定显示值“ abc”。但是,如果我更改条目中的文本,则不会触发 set {} ,因此 PropertyChanged()也不会触发。
我在这里错过了什么吗?还是必须使用BindableProperties?
谢谢!
对于需要为 LoginView 定义BindingContext的任何人,下面是代码背后:
[XamlCompilation(XamlCompilationOptions.Compile)]
public sealed partial class LoginView
{
public LoginView()
{
InitializeComponent();
// Set the ViewModel
this.BindingContext = new LoginViewModel();
}
}
因此,我创建了一个Testproject,该项目只是将条目的TextProperty绑定到属性。这可行!然后,我编辑了我现有的代码(删除了基类,简化了所有内容,等等)以简单地完成相同的基本操作……而且它不起作用。这可能是什么?
答案 0 :(得分:0)
更新Xamarin.Forms版本后,该错误现在消失了!