我是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));
}
非常感谢帮助。
答案 0 :(得分:3)
问题是你有一个无限循环。
这是因为您正在访问自己的getter和setter中的属性Dept
。这将无限地尝试调用getter或setter并最终崩溃。
要解决此问题,您必须添加一个支持字段,如:
private string _dept;
public string Dept
{
get => _dept;
set
{
if (_dept != value)
{
_dept = value;
OnPropertyChanged(nameof(Dept));
}
}
}