应用程序中断,同时获取xamarin中的属性集

时间:2018-06-17 09:35:11

标签: xamarin xamarin.forms

我是Xamarin的新手。我创建了一个测试应用程序,其中文本字段中的数据将更新标签,当我通过模型设置标签值静态时,它运行良好但是当我尝试动态更新标签值时应用程序中断。

class Properties : INotifyPropertyChanged
{
    public string Res { get; set; } // This works fine.
    public string Dept 
    {
        get { return Dept; } /// This cause the application to break whithout even notifying any error
        set
        { 
            if (Dept != value)
            {
                Dept = value;
                OnPropertyChanged(nameof(Dept ));
            }
        } /// This cause the application to break whithout even notifying any error
    }

    public event PropertyChangedEventHandler PropertyChanged;
    protected virtual void OnPropertyChanged(string propertyName)
    {
        var propertyChangedCallback = PropertyChanged;
        propertyChangedCallback?.Invoke(this, new PropertyChangedEventArgs(propertyName));
    }

非常感谢帮助。

1 个答案:

答案 0 :(得分:3)

问题是你有一个无限循环。

这是因为您正在访问自己的getter和setter中的属性Dept。这将无限地尝试调用getter或setter并最终崩溃。

要解决此问题,您必须添加一个支持字段,如:

private string _dept;
public string Dept
{
    get => _dept;
    set
    {
        if (_dept != value)
        {
            _dept = value;
            OnPropertyChanged(nameof(Dept));
        }
    }
}