Xamarin.Forms-PropertyChanged集{}未称为

时间:2018-06-21 07:40:41

标签: c# xamarin data-binding xamarin.forms

我有一个简单的 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?

谢谢!

编辑1

对于需要为 LoginView 定义BindingContext的任何人,下面是代码背后:

[XamlCompilation(XamlCompilationOptions.Compile)]
public sealed partial class LoginView
{
    public LoginView()
    {
        InitializeComponent();

        // Set the ViewModel
        this.BindingContext = new LoginViewModel();
    }
}

编辑2

因此,我创建了一个Testproject,该项目只是将条目的TextProperty绑定到属性。这可行!然后,我编辑了我现有的代码(删除了基类,简化了所有内容,等等)以简单地完成相同的基本操作……而且它不起作用。这可能是什么?

1 个答案:

答案 0 :(得分:0)

更新Xamarin.Forms版本后,该错误现在消失了!