当我向后滑动 [PopAsync() ] 时,有没有办法更新有界数据

Is there a way to update bounded data when I swipe back [PopAsync() ]

为了提供一些上下文,我正在编写一个 Xamarin.Forms 应用程序并利用 INotifyPropertyChanged 的​​数据绑定。目前我在按钮上显示了一个库存计数器。此按钮上的文本显示有界 "Count" 变量(例如,当前库存:35)。当我按下按钮时,我将一个屏幕推送到导航堆栈上,允许我编辑这个 "Count" 变量。我使用这样的 class 实现

 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 <ContentPage.BindingContext> <local:UserInventory /> </ContentPage.BindingContext> 上的教程在 Xaml 中添加了这个 class 所以变量被正确地限制了,我在当前页面上看到更新或者当我推送新页面时没有问题。问题是当我在 iOS 上向后滑动时,前一个屏幕上的按钮 "Current Inventory: 35" 没有更新以反映新的更改。如果我按下那个屏幕,更改就会反映出来。

有没有办法确保在您返回时更新有界数据 (PopAsync())?

尝试覆盖页面的 OnAppearing() 方法并从那里调用 OnPropertyChanged。

假设'UserInventory'绑定的虚拟机.....

public partial class Page1:ContentPage
{
  public Page1()
  {
    InitializeComponent();
    VM = (UserInventory)BindingContext;
  }

  public UserInventory VM { get; }

  protected override void OnAppearing()
  {
    VM.Notify();
    base.OnAppearing();
  }
}

.

public class UserInventory: INotifyPropertyChanged
{
  ........

  public void Notify()
  {
    OnPropertyChanged(nameof(Count));
  }
}