为了提供一些上下文,我正在编写一个 Xamarin.Forms 应用程序并利用 INotifyPropertyChanged 进行数据绑定。目前,我在按钮上显示了一个库存计数器。此按钮上的文本显示有界的“计数”变量(例如,当前库存:35)。当我按下按钮时,我将一个屏幕推送到导航堆栈上,它允许我编辑这个“计数”变量。我使用这样的类实现
public class UserInventory : INotifyPropertyChanged
{
private int count = 0;
// Declare the event
public event PropertyChangedEventHandler PropertyChanged;
public int Count
{
get => Preferences.Get(nameof(Count),0);
set
{
if (count == value || value <1)
return;
Preferences.Set(nameof(Count), value);
//count = value;
//Application.Current.Properties["Count"] = count;
OnPropertyChanged(nameof(Count));
//OnPropertyChanged(nameof(displayName));
}
}
public UserInventory()
{
}
void OnPropertyChanged(string count)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(count));
}
}
我根据 Xamarin 上的教程在 Xaml 中添加了这个类<ContentPage.BindingContext>
<local:UserInventory />
</ContentPage.BindingContext>
所以变量的边界是正确的,我在当前页面上看到更新或推送新页面时没有问题。问题是当我在 iOS 上滑动前一个屏幕时,带有“当前库存:35”按钮的屏幕不会更新以反映新的变化。如果我按下该屏幕,则会反映更改。
无论如何,当您返回 (PopAsync()) 时,是否可以确保更新有界数据?